@wizeworks/lens-hub 0.3.0-alpha.3 → 0.3.0-alpha.4

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 (190) hide show
  1. package/dist/alerts/api.d.ts +5 -0
  2. package/dist/alerts/api.d.ts.map +1 -0
  3. package/dist/alerts/api.js +87 -0
  4. package/dist/alerts/api.js.map +1 -0
  5. package/dist/alerts/deliver.d.ts +54 -0
  6. package/dist/alerts/deliver.d.ts.map +1 -0
  7. package/dist/alerts/deliver.js +66 -0
  8. package/dist/alerts/deliver.js.map +1 -0
  9. package/dist/alerts/evaluate.d.ts +16 -0
  10. package/dist/alerts/evaluate.d.ts.map +1 -0
  11. package/dist/alerts/evaluate.js +76 -0
  12. package/dist/alerts/evaluate.js.map +1 -0
  13. package/dist/alerts/loop.d.ts +10 -0
  14. package/dist/alerts/loop.d.ts.map +1 -0
  15. package/dist/alerts/loop.js +27 -0
  16. package/dist/alerts/loop.js.map +1 -0
  17. package/dist/alerts/store.d.ts +32 -0
  18. package/dist/alerts/store.d.ts.map +1 -0
  19. package/dist/alerts/store.js +38 -0
  20. package/dist/alerts/store.js.map +1 -0
  21. package/dist/alerts/target.d.ts +3 -0
  22. package/dist/alerts/target.d.ts.map +1 -0
  23. package/dist/alerts/target.js +23 -0
  24. package/dist/alerts/target.js.map +1 -0
  25. package/dist/api.d.ts +5 -0
  26. package/dist/api.d.ts.map +1 -1
  27. package/dist/api.js +38 -4
  28. package/dist/api.js.map +1 -1
  29. package/dist/body.d.ts +2 -2
  30. package/dist/body.d.ts.map +1 -1
  31. package/dist/body.js +4 -4
  32. package/dist/body.js.map +1 -1
  33. package/dist/cli-args.d.ts +1 -1
  34. package/dist/cli-args.d.ts.map +1 -1
  35. package/dist/cli-args.js +32 -1
  36. package/dist/cli-args.js.map +1 -1
  37. package/dist/data.js +1 -1
  38. package/dist/data.js.map +1 -1
  39. package/dist/hub.d.ts.map +1 -1
  40. package/dist/hub.js +15 -3
  41. package/dist/hub.js.map +1 -1
  42. package/dist/infra-read.d.ts +11 -0
  43. package/dist/infra-read.d.ts.map +1 -0
  44. package/dist/infra-read.js +30 -0
  45. package/dist/infra-read.js.map +1 -0
  46. package/dist/ingest.d.ts.map +1 -1
  47. package/dist/ingest.js +14 -3
  48. package/dist/ingest.js.map +1 -1
  49. package/dist/issues.d.ts +10 -0
  50. package/dist/issues.d.ts.map +1 -0
  51. package/dist/issues.js +34 -0
  52. package/dist/issues.js.map +1 -0
  53. package/dist/kit.d.ts +6 -0
  54. package/dist/kit.d.ts.map +1 -1
  55. package/dist/kit.js +4 -0
  56. package/dist/kit.js.map +1 -1
  57. package/dist/list-search.d.ts +10 -0
  58. package/dist/list-search.d.ts.map +1 -0
  59. package/dist/list-search.js +13 -0
  60. package/dist/list-search.js.map +1 -0
  61. package/dist/mcp.d.ts +3 -2
  62. package/dist/mcp.d.ts.map +1 -1
  63. package/dist/mcp.js +57 -11
  64. package/dist/mcp.js.map +1 -1
  65. package/dist/metrics-read.js +1 -1
  66. package/dist/metrics-read.js.map +1 -1
  67. package/dist/models-api.d.ts +11 -1
  68. package/dist/models-api.d.ts.map +1 -1
  69. package/dist/models-api.js +41 -15
  70. package/dist/models-api.js.map +1 -1
  71. package/dist/options.d.ts +23 -2
  72. package/dist/options.d.ts.map +1 -1
  73. package/dist/options.js +10 -1
  74. package/dist/options.js.map +1 -1
  75. package/dist/otlp/db-params.d.ts +7 -0
  76. package/dist/otlp/db-params.d.ts.map +1 -0
  77. package/dist/otlp/db-params.js +74 -0
  78. package/dist/otlp/db-params.js.map +1 -0
  79. package/dist/otlp/logs.d.ts +1 -1
  80. package/dist/otlp/logs.d.ts.map +1 -1
  81. package/dist/otlp/logs.js +8 -7
  82. package/dist/otlp/logs.js.map +1 -1
  83. package/dist/otlp/metrics.d.ts +3 -3
  84. package/dist/otlp/metrics.d.ts.map +1 -1
  85. package/dist/otlp/metrics.js +7 -6
  86. package/dist/otlp/metrics.js.map +1 -1
  87. package/dist/otlp/nested.d.ts +4 -0
  88. package/dist/otlp/nested.d.ts.map +1 -0
  89. package/dist/otlp/nested.js +19 -0
  90. package/dist/otlp/nested.js.map +1 -0
  91. package/dist/otlp/semconv.d.ts +17 -0
  92. package/dist/otlp/semconv.d.ts.map +1 -0
  93. package/dist/otlp/semconv.js +68 -0
  94. package/dist/otlp/semconv.js.map +1 -0
  95. package/dist/otlp/spans.d.ts +3 -3
  96. package/dist/otlp/spans.d.ts.map +1 -1
  97. package/dist/otlp/spans.js +15 -7
  98. package/dist/otlp/spans.js.map +1 -1
  99. package/dist/otlp/values.d.ts +5 -10
  100. package/dist/otlp/values.d.ts.map +1 -1
  101. package/dist/otlp/values.js +32 -24
  102. package/dist/otlp/values.js.map +1 -1
  103. package/dist/saved.d.ts +7 -0
  104. package/dist/saved.d.ts.map +1 -0
  105. package/dist/saved.js +49 -0
  106. package/dist/saved.js.map +1 -0
  107. package/dist/scale-exec.d.ts +2 -2
  108. package/dist/scale-exec.d.ts.map +1 -1
  109. package/dist/scale-exec.js +4 -4
  110. package/dist/scale-exec.js.map +1 -1
  111. package/dist/schema-saved.d.ts +15 -0
  112. package/dist/schema-saved.d.ts.map +1 -0
  113. package/dist/schema-saved.js +43 -0
  114. package/dist/schema-saved.js.map +1 -0
  115. package/dist/schema-scale.d.ts.map +1 -1
  116. package/dist/schema-scale.js +11 -1
  117. package/dist/schema-scale.js.map +1 -1
  118. package/dist/schema.d.ts +2 -2
  119. package/dist/schema.d.ts.map +1 -1
  120. package/dist/schema.js +20 -1
  121. package/dist/schema.js.map +1 -1
  122. package/dist/search-api.d.ts +1 -1
  123. package/dist/search-api.d.ts.map +1 -1
  124. package/dist/search-api.js +7 -5
  125. package/dist/search-api.js.map +1 -1
  126. package/dist/settings-prune.d.ts +12 -0
  127. package/dist/settings-prune.d.ts.map +1 -0
  128. package/dist/settings-prune.js +15 -0
  129. package/dist/settings-prune.js.map +1 -0
  130. package/dist/settings.d.ts +27 -0
  131. package/dist/settings.d.ts.map +1 -0
  132. package/dist/settings.js +64 -0
  133. package/dist/settings.js.map +1 -0
  134. package/dist/settle.d.ts +3 -3
  135. package/dist/settle.d.ts.map +1 -1
  136. package/dist/settle.js +12 -6
  137. package/dist/settle.js.map +1 -1
  138. package/dist/slos.d.ts +14 -0
  139. package/dist/slos.d.ts.map +1 -0
  140. package/dist/slos.js +73 -0
  141. package/dist/slos.js.map +1 -0
  142. package/dist/sourcemaps-api.d.ts +15 -0
  143. package/dist/sourcemaps-api.d.ts.map +1 -0
  144. package/dist/sourcemaps-api.js +55 -0
  145. package/dist/sourcemaps-api.js.map +1 -0
  146. package/dist/sourcemaps.d.ts +10 -0
  147. package/dist/sourcemaps.d.ts.map +1 -0
  148. package/dist/sourcemaps.js +41 -0
  149. package/dist/sourcemaps.js.map +1 -0
  150. package/dist/store-read.d.ts +2 -0
  151. package/dist/store-read.d.ts.map +1 -1
  152. package/dist/store-read.js +3 -1
  153. package/dist/store-read.js.map +1 -1
  154. package/dist/store.d.ts +13 -3
  155. package/dist/store.d.ts.map +1 -1
  156. package/dist/store.js +35 -10
  157. package/dist/store.js.map +1 -1
  158. package/dist/tags-api.d.ts +5 -0
  159. package/dist/tags-api.d.ts.map +1 -0
  160. package/dist/tags-api.js +94 -0
  161. package/dist/tags-api.js.map +1 -0
  162. package/dist/tags.d.ts +11 -0
  163. package/dist/tags.d.ts.map +1 -0
  164. package/dist/tags.js +31 -0
  165. package/dist/tags.js.map +1 -0
  166. package/dist/uptime/api.d.ts +5 -0
  167. package/dist/uptime/api.d.ts.map +1 -0
  168. package/dist/uptime/api.js +78 -0
  169. package/dist/uptime/api.js.map +1 -0
  170. package/dist/uptime/cert.d.ts +5 -0
  171. package/dist/uptime/cert.d.ts.map +1 -0
  172. package/dist/uptime/cert.js +26 -0
  173. package/dist/uptime/cert.js.map +1 -0
  174. package/dist/uptime/guard.d.ts +13 -0
  175. package/dist/uptime/guard.d.ts.map +1 -0
  176. package/dist/uptime/guard.js +38 -0
  177. package/dist/uptime/guard.js.map +1 -0
  178. package/dist/uptime/run.d.ts +11 -0
  179. package/dist/uptime/run.d.ts.map +1 -0
  180. package/dist/uptime/run.js +96 -0
  181. package/dist/uptime/run.js.map +1 -0
  182. package/dist/uptime/schedule.d.ts +15 -0
  183. package/dist/uptime/schedule.d.ts.map +1 -0
  184. package/dist/uptime/schedule.js +26 -0
  185. package/dist/uptime/schedule.js.map +1 -0
  186. package/dist/uptime/store.d.ts +25 -0
  187. package/dist/uptime/store.d.ts.map +1 -0
  188. package/dist/uptime/store.js +80 -0
  189. package/dist/uptime/store.js.map +1 -0
  190. package/package.json +4 -4
@@ -1,4 +1,4 @@
1
- import { type MetricHistogram, type MetricPoint } from "@wizeworks/lens-core";
1
+ import { type Attributes, type MetricHistogram, type MetricPoint } from "@wizeworks/lens-core";
2
2
  import type { HubWrite } from "../store.js";
3
3
  import { type OtlpKeyValue, type OtlpResource } from "./values.js";
4
4
  type Num = string | number | undefined;
@@ -51,8 +51,8 @@ export interface OtlpResourceMetrics {
51
51
  }
52
52
  /** An exponential histogram as explicit buckets. Zero and negative values go to the first bucket. */
53
53
  export declare function fromExponential(dp: OtlpDataPoint): MetricHistogram;
54
- /** The points of one OTLP metric. Points that do not pass the core checks are skipped. */
55
- export declare function pointsOf(m: OtlpMetric, service: string, redactKeys: readonly string[]): MetricPoint[];
54
+ /** The points of one OTLP metric, with the resource's host and Kubernetes attributes (`resource`) under their own. Points that fail the core checks are skipped. */
55
+ export declare function pointsOf(m: OtlpMetric, service: string, redactKeys: readonly string[], resource?: Attributes): MetricPoint[];
56
56
  /** One write per resource: each resource is one sender. */
57
57
  export declare function writesFromMetrics(list: readonly OtlpResourceMetrics[], redactKeys: readonly string[]): HubWrite[];
58
58
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/otlp/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAmB,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AACpH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAA2B,KAAK,YAAY,EAAE,KAAK,YAAY,EAAY,MAAM,aAAa,CAAC;AAEtG,KAAK,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvC,UAAU,aAAa;IACrB,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,GAAG,CAAC;IACxB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,QAAQ,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IACrD,QAAQ,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;CACtD;AAED,UAAU,QAAQ;IAChB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,oBAAoB,CAAC,EAAE,QAAQ,CAAC;IAChC,OAAO,CAAC,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,YAAY,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAA;KAAE,EAAE,CAAC;CACxE;AAaD,qGAAqG;AACrG,wBAAgB,eAAe,CAAC,EAAE,EAAE,aAAa,GAAG,eAAe,CAUlE;AAoBD,0FAA0F;AAC1F,wBAAgB,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,EAAE,CAsBrG;AAED,2DAA2D;AAC3D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,mBAAmB,EAAE,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,EAAE,CAMjH"}
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/otlp/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAuB,KAAK,eAAe,EAAmB,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAC1J,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAA2B,KAAK,YAAY,EAAE,KAAK,YAAY,EAA0B,MAAM,aAAa,CAAC;AAEpH,KAAK,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvC,UAAU,aAAa;IACrB,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,GAAG,CAAC;IACxB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,QAAQ,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IACrD,QAAQ,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;CACtD;AAED,UAAU,QAAQ;IAChB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,oBAAoB,CAAC,EAAE,QAAQ,CAAC;IAChC,OAAO,CAAC,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,YAAY,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAA;KAAE,EAAE,CAAC;CACxE;AAaD,qGAAqG;AACrG,wBAAgB,eAAe,CAAC,EAAE,EAAE,aAAa,GAAG,eAAe,CAUlE;AAoBD,oKAAoK;AACpK,wBAAgB,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,GAAE,UAAe,GAAG,WAAW,EAAE,CAsBhI;AAED,2DAA2D;AAC3D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,mBAAmB,EAAE,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,EAAE,CAOjH"}
@@ -1,5 +1,5 @@
1
- import { sanitizeMetricPoint } from "@wizeworks/lens-core";
2
- import { attributesOf, nanosToMs, senderOf } from "./values.js";
1
+ import { INFRA_RESOURCE_KEYS, sanitizeMetricPoint } from "@wizeworks/lens-core";
2
+ import { attributesOf, nanosToMs, resourcePick, senderOf } from "./values.js";
3
3
  const num = (v) => (v === undefined || v === "" ? 0 : Number(v));
4
4
  const temporalityOf = (t) => (t === 1 || t === "AGGREGATION_TEMPORALITY_DELTA" ? "delta" : "cumulative");
5
5
  /** An explicit-bucket histogram as sent. Counts that do not fit the bounds keep count and sum only. */
@@ -37,8 +37,8 @@ function shapeOf(m) {
37
37
  return { kind: "histogram", data: m.summary, histogram: fromSummary };
38
38
  return null;
39
39
  }
40
- /** The points of one OTLP metric. Points that do not pass the core checks are skipped. */
41
- export function pointsOf(m, service, redactKeys) {
40
+ /** The points of one OTLP metric, with the resource's host and Kubernetes attributes (`resource`) under their own. Points that fail the core checks are skipped. */
41
+ export function pointsOf(m, service, redactKeys, resource = {}) {
42
42
  const shape = shapeOf(m);
43
43
  if (!shape || !m.name)
44
44
  return [];
@@ -50,7 +50,7 @@ export function pointsOf(m, service, redactKeys) {
50
50
  kind: shape.kind,
51
51
  unit: m.unit ?? "",
52
52
  description: m.description,
53
- attributes: attributesOf(dp.attributes),
53
+ attributes: { ...resource, ...attributesOf(dp.attributes) },
54
54
  timeMs: nanosToMs(dp.timeUnixNano),
55
55
  startMs: startMs || undefined,
56
56
  monotonic: shape.data.isMonotonic === true,
@@ -66,7 +66,8 @@ export function pointsOf(m, service, redactKeys) {
66
66
  export function writesFromMetrics(list, redactKeys) {
67
67
  return list.map((rm) => {
68
68
  const sender = senderOf(rm.resource);
69
- const metrics = (rm.scopeMetrics ?? []).flatMap((sm) => (sm.metrics ?? []).flatMap((m) => pointsOf(m, sender.service, redactKeys)));
69
+ const resource = resourcePick(rm.resource, INFRA_RESOURCE_KEYS);
70
+ const metrics = (rm.scopeMetrics ?? []).flatMap((sm) => (sm.metrics ?? []).flatMap((m) => pointsOf(m, sender.service, redactKeys, resource)));
70
71
  return { sender, via: "otlp", spans: [], logs: [], remotes: [], metrics };
71
72
  });
72
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/otlp/metrics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/otlp/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,mBAAmB,EAA2D,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE1J,OAAO,EAAE,YAAY,EAAE,SAAS,EAAwC,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA4CpH,MAAM,GAAG,GAAG,CAAC,CAAM,EAAU,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,MAAM,aAAa,GAAG,CAAC,CAA8B,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,+BAA+B,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;AAEtI,uGAAuG;AACvG,SAAS,QAAQ,CAAC,EAAiB;IACjC,MAAM,MAAM,GAAG,CAAC,EAAE,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,CAAC,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACjD,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACtJ,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,eAAe,CAAC,EAAiB;IAC/C,8GAA8G;IAC9G,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACtG,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IAClG,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACtE,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC;AAC5D,CAAC;AAED,yCAAyC;AACzC,MAAM,WAAW,GAAG,CAAC,EAAiB,EAAmB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;AAQjI,SAAS,OAAO,CAAC,CAAa;IAC5B,IAAI,CAAC,CAAC,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,IAAI,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IAC/C,IAAI,CAAC,CAAC,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtF,IAAI,CAAC,CAAC,oBAAoB;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,oBAAoB,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;IACnH,IAAI,CAAC,CAAC,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;IACrF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oKAAoK;AACpK,MAAM,UAAU,QAAQ,CAAC,CAAa,EAAE,OAAe,EAAE,UAA6B,EAAE,QAAQ,GAAe,EAAE;IAC/G,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACrE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;QAClD,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG;YACV,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;YAClB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,UAAU,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE;YAC3D,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,YAAY,CAAC;YAClC,OAAO,EAAE,OAAO,IAAI,SAAS;YAC7B,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI;YAC1C,WAAW,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW;YACxF,KAAK,EAAE,EAAE,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1E,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC;SACjC,CAAC;QACF,MAAM,CAAC,GAAG,mBAAmB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACxD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,iBAAiB,CAAC,IAAoC,EAAE,UAA6B;IACnG,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACrB,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC9I,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAe,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;IACrF,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Span } from "@wizeworks/lens-core";
2
+ /** An ORM span (SQLAlchemy) over a driver span is one query: the driver span becomes internal, and its parameters move up. */
3
+ export declare function hideNestedDb(spans: Span[]): Span[];
4
+ //# sourceMappingURL=nested.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nested.d.ts","sourceRoot":"","sources":["../../src/otlp/nested.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAKjD,8HAA8H;AAC9H,wBAAgB,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAYlD"}
@@ -0,0 +1,19 @@
1
+ import { DB_PARAMS } from "./db-params.js";
2
+ const text = (s) => s.attributes["db.query.text"];
3
+ /** An ORM span (SQLAlchemy) over a driver span is one query: the driver span becomes internal, and its parameters move up. */
4
+ export function hideNestedDb(spans) {
5
+ const byId = new Map(spans.map((s) => [s.spanId, s]));
6
+ for (const s of spans) {
7
+ if (s.category !== "db" || !s.parentSpanId)
8
+ continue;
9
+ const parent = byId.get(s.parentSpanId);
10
+ if (parent?.category !== "db")
11
+ continue;
12
+ if (parent.attributes[DB_PARAMS] === undefined && s.attributes[DB_PARAMS] !== undefined && text(parent) === text(s)) {
13
+ parent.attributes[DB_PARAMS] = s.attributes[DB_PARAMS];
14
+ }
15
+ s.category = "internal";
16
+ }
17
+ return spans;
18
+ }
19
+ //# sourceMappingURL=nested.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nested.js","sourceRoot":"","sources":["../../src/otlp/nested.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,IAAI,GAAG,CAAC,CAAO,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAExD,8HAA8H;AAC9H,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY;YAAE,SAAS;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QACxC,IAAI,MAAM,EAAE,QAAQ,KAAK,IAAI;YAAE,SAAS;QACxC,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACpH,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,SAAS,CAAE,CAAC;QAC1D,CAAC;QACD,CAAC,CAAC,QAAQ,GAAG,UAAU,CAAC;IAC1B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { AttributeValue, Attributes } from "@wizeworks/lens-core";
2
+ export declare const ALIASES: Record<string, string>;
3
+ /** Copy older names to the current ones when the current one is missing. First alias wins. */
4
+ export declare function applyAliases(out: Attributes): Attributes;
5
+ /** True for a captured header attribute (`http.request.header.*`, `http.response.header.*`). */
6
+ export declare const isHeaderKey: (key: string) => boolean;
7
+ /** Header names as the add-ons send them: lower case with dashes (Python sends `content_type`). */
8
+ export declare function headerKey(key: string): string;
9
+ /** The agents send each header as a list of values; the dashboard shows them joined with ", ". */
10
+ export declare function headerValue<V extends {
11
+ arrayValue?: {
12
+ values?: V[];
13
+ };
14
+ }>(v: V | undefined, one: (x: V | undefined) => AttributeValue): AttributeValue;
15
+ /** `http.target` holds the path and the query: split them into `url.path` and `url.query`. */
16
+ export declare function splitTarget(a: Attributes): void;
17
+ //# sourceMappingURL=semconv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semconv.d.ts","sourceRoot":"","sources":["../../src/otlp/semconv.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvE,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA+B1C,CAAC;AAEF,8FAA8F;AAC9F,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU,CAKxD;AAID,gGAAgG;AAChG,eAAO,MAAM,WAAW,QAAS,MAAM,KAAG,OAA8B,CAAC;AAEzE,mGAAmG;AACnG,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED,kGAAkG;AAClG,wBAAgB,WAAW,CAAC,CAAC,SAAS;IAAE,UAAU,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAA;KAAE,CAAA;CAAE,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,KAAK,cAAc,GAAG,cAAc,CAGpJ;AAED,8FAA8F;AAC9F,wBAAgB,WAAW,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAO/C"}
@@ -0,0 +1,68 @@
1
+ // Older semantic-convention names (what the Java, Python, and Go agents still send by default), mapped to the current ones.
2
+ export const ALIASES = {
3
+ "http.method": "http.request.method",
4
+ "http.status_code": "http.response.status_code",
5
+ "http.url": "url.full",
6
+ "http.target": "url.path",
7
+ "http.scheme": "url.scheme",
8
+ "http.user_agent": "user_agent.original",
9
+ "http.client_ip": "client.address",
10
+ "http.flavor": "network.protocol.version",
11
+ "http.request_content_length": "http.request.body.size",
12
+ "http.response_content_length": "http.response.body.size",
13
+ "db.statement": "db.query.text",
14
+ "db.system": "db.system.name",
15
+ "db.name": "db.namespace",
16
+ "db.operation": "db.operation.name",
17
+ "db.sql.table": "db.collection.name",
18
+ "db.mongodb.collection": "db.collection.name",
19
+ "db.cassandra.table": "db.collection.name",
20
+ "db.cosmosdb.container": "db.collection.name",
21
+ "net.peer.name": "server.address",
22
+ "net.peer.port": "server.port",
23
+ "net.host.name": "server.address",
24
+ "net.host.port": "server.port",
25
+ "net.sock.peer.addr": "network.peer.address",
26
+ "net.sock.peer.port": "network.peer.port",
27
+ "messaging.operation": "messaging.operation.type",
28
+ "messaging.destination": "messaging.destination.name",
29
+ "code.function": "code.function.name",
30
+ "code.filepath": "code.file.path",
31
+ "code.lineno": "code.line.number",
32
+ "deployment.environment": "deployment.environment.name",
33
+ };
34
+ /** Copy older names to the current ones when the current one is missing. First alias wins. */
35
+ export function applyAliases(out) {
36
+ for (const [old, current] of Object.entries(ALIASES)) {
37
+ if (out[old] !== undefined && out[current] === undefined)
38
+ out[current] = out[old];
39
+ }
40
+ return out;
41
+ }
42
+ const HEADER_RE = /^(http\.(?:request|response)\.header\.)(.+)$/;
43
+ /** True for a captured header attribute (`http.request.header.*`, `http.response.header.*`). */
44
+ export const isHeaderKey = (key) => HEADER_RE.test(key);
45
+ /** Header names as the add-ons send them: lower case with dashes (Python sends `content_type`). */
46
+ export function headerKey(key) {
47
+ const m = HEADER_RE.exec(key);
48
+ return m[1] + m[2].toLowerCase().replace(/_/g, "-");
49
+ }
50
+ /** The agents send each header as a list of values; the dashboard shows them joined with ", ". */
51
+ export function headerValue(v, one) {
52
+ if (!v?.arrayValue)
53
+ return one(v);
54
+ return (v.arrayValue.values ?? []).map((x) => String(one(x) ?? "")).join(", ");
55
+ }
56
+ /** `http.target` holds the path and the query: split them into `url.path` and `url.query`. */
57
+ export function splitTarget(a) {
58
+ const path = a["url.path"];
59
+ if (typeof path !== "string")
60
+ return;
61
+ const q = path.indexOf("?");
62
+ if (q < 0)
63
+ return;
64
+ a["url.path"] = path.slice(0, q);
65
+ if (a["url.query"] === undefined)
66
+ a["url.query"] = path.slice(q + 1);
67
+ }
68
+ //# sourceMappingURL=semconv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../src/otlp/semconv.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type Span } from "@wizeworks/lens-core";
1
+ import { type Attributes, type Span } from "@wizeworks/lens-core";
2
2
  import type { HubWrite } from "../store.js";
3
3
  import { type OtlpKeyValue, type OtlpResource } from "./values.js";
4
4
  export interface OtlpSpan {
@@ -26,8 +26,8 @@ export interface OtlpResourceSpans {
26
26
  spans?: OtlpSpan[];
27
27
  }[];
28
28
  }
29
- /** One OTLP span as a contract span. Null when its ids are not valid. */
30
- export declare function toSpan(s: OtlpSpan, service: string, redactKeys: readonly string[]): Span | null;
29
+ /** One OTLP span as a contract span, with the resource's Kubernetes attributes (`resource`) under its own. Null when its ids are not valid. */
30
+ export declare function toSpan(s: OtlpSpan, service: string, redactKeys: readonly string[], resource?: Attributes): Span | null;
31
31
  /** One write per resource: each resource is one sender. */
32
32
  export declare function writesFromSpans(list: readonly OtlpResourceSpans[], redactKeys: readonly string[]): HubWrite[];
33
33
  //# sourceMappingURL=spans.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spans.d.ts","sourceRoot":"","sources":["../../src/otlp/spans.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+C,KAAK,IAAI,EAAoC,MAAM,sBAAsB,CAAC;AAChI,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAkC,KAAK,YAAY,EAAE,KAAK,YAAY,EAAY,MAAM,aAAa,CAAC;AAE7G,MAAM,WAAW,QAAQ;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAA;KAAE,EAAE,CAAC;IAC1F,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACvD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,UAAU,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAA;KAAE,EAAE,CAAC;CACvC;AAqCD,yEAAyE;AACzE,wBAAgB,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,CA4B/F;AAED,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,iBAAiB,EAAE,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,EAAE,CAO7G"}
1
+ {"version":3,"file":"spans.d.ts","sourceRoot":"","sources":["../../src/otlp/spans.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAkD,KAAK,IAAI,EAAkD,MAAM,sBAAsB,CAAC;AAClK,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAI5C,OAAO,EAAkC,KAAK,YAAY,EAAE,KAAK,YAAY,EAA0B,MAAM,aAAa,CAAC;AAE3H,MAAM,WAAW,QAAQ;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAA;KAAE,EAAE,CAAC;IAC1F,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACvD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,UAAU,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAA;KAAE,EAAE,CAAC;CACvC;AAqCD,+IAA+I;AAC/I,wBAAgB,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,GAAE,UAAe,GAAG,IAAI,GAAG,IAAI,CA+B1H;AAED,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,iBAAiB,EAAE,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,EAAE,CAS7G"}
@@ -1,5 +1,8 @@
1
- import { isDbCall, redactAttributes } from "@wizeworks/lens-core";
2
- import { attributesOf, hexId, nanosToMs, senderOf } from "./values.js";
1
+ import { isDbCall, redactAttributes, SPAN_RESOURCE_KEYS, stampVersion } from "@wizeworks/lens-core";
2
+ import { foldDbParams } from "./db-params.js";
3
+ import { hideNestedDb } from "./nested.js";
4
+ import { splitTarget } from "./semconv.js";
5
+ import { attributesOf, hexId, nanosToMs, resourcePick, senderOf } from "./values.js";
3
6
  const KINDS = ["internal", "internal", "server", "client", "producer", "consumer"];
4
7
  const KIND_NAMES = {
5
8
  SPAN_KIND_SERVER: "server",
@@ -37,14 +40,17 @@ function clientName(a, fallback) {
37
40
  return fallback;
38
41
  }
39
42
  }
40
- /** One OTLP span as a contract span. Null when its ids are not valid. */
41
- export function toSpan(s, service, redactKeys) {
43
+ /** One OTLP span as a contract span, with the resource's Kubernetes attributes (`resource`) under its own. Null when its ids are not valid. */
44
+ export function toSpan(s, service, redactKeys, resource = {}) {
42
45
  const traceId = hexId(s.traceId, 32);
43
46
  const spanId = hexId(s.spanId, 16);
44
47
  if (!traceId || !spanId)
45
48
  return null;
46
49
  const kind = kindOf(s.kind);
47
- const attributes = redactAttributes(attributesOf(s.attributes), redactKeys);
50
+ const raw = attributesOf(s.attributes);
51
+ splitTarget(raw);
52
+ foldDbParams(raw, redactKeys);
53
+ const attributes = redactAttributes({ ...resource, ...raw }, redactKeys);
48
54
  const category = categoryOf(kind, attributes);
49
55
  const startMs = nanosToMs(s.startTimeUnixNano);
50
56
  const name = String(s.name ?? "span").slice(0, 500);
@@ -73,8 +79,10 @@ export function writesFromSpans(list, redactKeys) {
73
79
  return list.map((rs) => {
74
80
  const sender = senderOf(rs.resource);
75
81
  const spans = (rs.scopeSpans ?? []).flatMap((ss) => ss.spans ?? []);
76
- const mapped = spans.map((s) => toSpan(s, sender.service, redactKeys)).filter((s) => s !== null);
77
- return { sender, via: "otlp", spans: mapped, logs: [], remotes: [] };
82
+ const resource = resourcePick(rs.resource, SPAN_RESOURCE_KEYS);
83
+ const mapped = spans.map((s) => toSpan(s, sender.service, redactKeys, resource)).filter((s) => s !== null);
84
+ // The resource's service.version goes on the sender's spans, for releases and so Problems can tell a new one.
85
+ return { sender, via: "otlp", spans: stampVersion(hideNestedDb(mapped), sender), logs: [], remotes: [] };
78
86
  });
79
87
  }
80
88
  //# sourceMappingURL=spans.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spans.js","sourceRoot":"","sources":["../../src/otlp/spans.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spans.js","sourceRoot":"","sources":["../../src/otlp/spans.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AttributeValue, Attributes } from "@wizeworks/lens-core";
1
+ import { type AttributeValue, type Attributes, type HubSender } from "@wizeworks/lens-core";
2
2
  /** OTLP shapes after JSON parse or protobuf decode. Ids are hex, 64-bit numbers are strings or numbers. */
3
3
  export interface OtlpAnyValue {
4
4
  stringValue?: string;
@@ -28,13 +28,8 @@ export declare function attributesOf(list: OtlpKeyValue[] | undefined): Attribut
28
28
  export declare function nanosToMs(v: string | number | undefined): number;
29
29
  /** A 16- or 32-hex id, or undefined for an empty or all-zero id. */
30
30
  export declare function hexId(v: string | undefined, length: 16 | 32): string | undefined;
31
- /** The sender a resource describes. */
32
- export declare function senderOf(resource: OtlpResource | undefined): {
33
- service: string;
34
- project: string | undefined;
35
- version: string | undefined;
36
- runtime: string;
37
- environment: string | undefined;
38
- host: string | undefined;
39
- };
31
+ /** The resource attributes of `keys` that it has, to copy onto points or spans. */
32
+ export declare function resourcePick(resource: OtlpResource | undefined, keys: readonly string[]): Attributes;
33
+ /** The sender a resource describes. The collector's host and Kubernetes receivers send no service name: they are "infrastructure". */
34
+ export declare function senderOf(resource: OtlpResource | undefined): HubSender;
40
35
  //# sourceMappingURL=values.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../src/otlp/values.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvE,2GAA2G;AAC3G,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC;IACzC,WAAW,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;CAC7B;AAED,oFAAoF;AACpF,wBAAgB,OAAO,CAAC,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,cAAc,CAUnE;AAkBD,0FAA0F;AAC1F,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,SAAS,GAAG,UAAU,CAOzE;AAED,uDAAuD;AACvD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAKhE;AAED,oEAAoE;AACpE,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,SAAS,CAIhF;AAED,uCAAuC;AACvC,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS;IAKvD,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,WAAW;IACX,IAAI;EAEP"}
1
+ {"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../src/otlp/values.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAiB,MAAM,sBAAsB,CAAC;AAG3G,2GAA2G;AAC3G,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC;IACzC,WAAW,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;CAC7B;AAED,oFAAoF;AACpF,wBAAgB,OAAO,CAAC,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,cAAc,CAUnE;AAED,0FAA0F;AAC1F,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,SAAS,GAAG,UAAU,CAQzE;AAED,uDAAuD;AACvD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAKhE;AAED,oEAAoE;AACpE,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,SAAS,CAIhF;AAED,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAKpG;AASD,sIAAsI;AACtI,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,CAiBtE"}
@@ -1,3 +1,5 @@
1
+ import { INFRA_SERVICE } from "@wizeworks/lens-core";
2
+ import { applyAliases, headerKey, headerValue, isHeaderKey } from "./semconv.js";
1
3
  /** One AnyValue as a contract attribute value. Arrays and maps become JSON text. */
2
4
  export function valueOf(v) {
3
5
  if (!v)
@@ -18,32 +20,18 @@ export function valueOf(v) {
18
20
  return v.bytesValue;
19
21
  return null;
20
22
  }
21
- // Older semantic-convention names, mapped to the ones the dashboard reads.
22
- const ALIASES = {
23
- "http.method": "http.request.method",
24
- "http.status_code": "http.response.status_code",
25
- "http.url": "url.full",
26
- "http.target": "url.path",
27
- "http.scheme": "url.scheme",
28
- "db.statement": "db.query.text",
29
- "db.system": "db.system.name",
30
- "db.name": "db.namespace",
31
- "db.operation": "db.operation.name",
32
- "net.peer.name": "server.address",
33
- "net.peer.port": "server.port",
34
- "deployment.environment": "deployment.environment.name",
35
- };
36
23
  /** Key-value list as contract attributes, with older names copied to the current ones. */
37
24
  export function attributesOf(list) {
38
25
  const out = {};
39
- for (const kv of list ?? [])
40
- if (kv?.key)
26
+ for (const kv of list ?? []) {
27
+ if (!kv?.key)
28
+ continue;
29
+ if (isHeaderKey(kv.key))
30
+ out[headerKey(kv.key)] = headerValue(kv.value, valueOf);
31
+ else
41
32
  out[kv.key] = valueOf(kv.value);
42
- for (const [old, current] of Object.entries(ALIASES)) {
43
- if (out[old] !== undefined && out[current] === undefined)
44
- out[current] = out[old];
45
33
  }
46
- return out;
34
+ return applyAliases(out);
47
35
  }
48
36
  /** Unix nanoseconds (string or number) as epoch ms. */
49
37
  export function nanosToMs(v) {
@@ -61,18 +49,38 @@ export function hexId(v, length) {
61
49
  return undefined;
62
50
  return id;
63
51
  }
64
- /** The sender a resource describes. */
52
+ /** The resource attributes of `keys` that it has, to copy onto points or spans. */
53
+ export function resourcePick(resource, keys) {
54
+ const a = attributesOf(resource?.attributes);
55
+ const out = {};
56
+ for (const k of keys)
57
+ if (a[k] !== undefined && a[k] !== null && a[k] !== "")
58
+ out[k] = a[k];
59
+ return out;
60
+ }
61
+ /** Where a resource runs in Kubernetes; undefined when it has no k8s attributes. */
62
+ function k8sOf(str) {
63
+ const all = { cluster: str("k8s.cluster.name"), namespace: str("k8s.namespace.name"), pod: str("k8s.pod.name"), node: str("k8s.node.name") };
64
+ const k8s = Object.fromEntries(Object.entries(all).filter(([, v]) => v));
65
+ return Object.keys(k8s).length > 0 ? k8s : undefined;
66
+ }
67
+ /** The sender a resource describes. The collector's host and Kubernetes receivers send no service name: they are "infrastructure". */
65
68
  export function senderOf(resource) {
66
69
  const a = attributesOf(resource?.attributes);
67
70
  const str = (k) => (typeof a[k] === "string" && a[k] ? String(a[k]).slice(0, 100) : undefined);
68
71
  const lang = str("telemetry.sdk.language");
72
+ const k8s = k8sOf(str);
73
+ const infra = !!(str("host.name") || k8s);
69
74
  return {
70
- service: str("service.name") ?? "unknown_service",
75
+ service: str("service.name") ?? (infra ? INFRA_SERVICE : "unknown_service"),
71
76
  project: str("wizelens.project") ?? str("service.namespace"),
72
77
  version: str("service.version"),
78
+ release: str("service.version"),
73
79
  runtime: lang ? `otlp ${lang}` : "otlp",
74
80
  environment: str("deployment.environment.name"),
75
- host: str("host.name"),
81
+ // A pod's host name is the pod's name; senders without host.name (most SDKs) still get one row per pod.
82
+ host: str("host.name") ?? k8s?.pod,
83
+ ...(k8s ? { k8s } : {}),
76
84
  };
77
85
  }
78
86
  //# sourceMappingURL=values.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"values.js","sourceRoot":"","sources":["../../src/otlp/values.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"values.js","sourceRoot":"","sources":["../../src/otlp/values.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { IncomingMessage, ServerResponse } from "node:http";
2
+ import type { DatabaseSync } from "node:sqlite";
3
+ import { type SavedItem } from "@wizeworks/lens-core";
4
+ export declare const listSaved: (db: DatabaseSync, project: string) => SavedItem[];
5
+ /** `api/saved?project=` lists and adds; `api/saved/:id` reads, changes, and deletes. */
6
+ export declare function handleSaved(db: DatabaseSync, sub: string, req: IncomingMessage, res: ServerResponse, url: URL, now: number): Promise<void>;
7
+ //# sourceMappingURL=saved.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saved.d.ts","sourceRoot":"","sources":["../src/saved.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAOlE,eAAO,MAAM,SAAS,OAAQ,YAAY,WAAW,MAAM,KAAG,SAAS,EAAsG,CAAC;AAuB9K,wFAAwF;AACxF,wBAAsB,WAAW,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYhJ"}
package/dist/saved.js ADDED
@@ -0,0 +1,49 @@
1
+ // Saved views, searches, and dashboards on the hub: `api/saved?project=`. The hub has no accounts, so every item is shared.
2
+ import { randomUUID } from "node:crypto";
3
+ import { parseSaved } from "@wizeworks/lens-core";
4
+ import { sendJson } from "@wizeworks/lens-node/kit";
5
+ import { parseJson, readBody } from "./body.js";
6
+ // Items saved before log searches could be charts have no `chart`.
7
+ const itemsOf = (rows) => rows.map((r) => ({ chart: false, ...JSON.parse(r.json) }));
8
+ export const listSaved = (db, project) => itemsOf(db.prepare("SELECT json FROM saved WHERE project = ? ORDER BY created_ms").all(project));
9
+ const savedById = (db, project, id) => itemsOf(db.prepare("SELECT json FROM saved WHERE project = ? AND id = ?").all(project, id))[0];
10
+ function save(db, item) {
11
+ db.prepare("INSERT INTO saved (id, project, kind, json, created_ms) VALUES (?, ?, ?, ?, ?) ON CONFLICT (id) DO UPDATE SET json = excluded.json").run(item.id, item.projectId, item.kind, JSON.stringify(item), item.createdMs);
12
+ }
13
+ const body = async (req) => (parseJson(await readBody(req)) ?? {});
14
+ async function onItem(db, method, project, id, req, res, now) {
15
+ const item = savedById(db, project, id);
16
+ if (!item)
17
+ return sendJson(res, 404, { error: "Not found." });
18
+ if (method === "GET")
19
+ return sendJson(res, 200, item);
20
+ if (method === "DELETE")
21
+ return (db.prepare("DELETE FROM saved WHERE id = ?").run(id), sendJson(res, 200, { ok: true }));
22
+ if (method !== "PATCH")
23
+ return sendJson(res, 405, { error: "method not allowed" });
24
+ const input = parseSaved({ ...item, ...(await body(req)), kind: item.kind });
25
+ if (typeof input === "string")
26
+ return sendJson(res, 400, { error: input });
27
+ const next = { ...item, ...input, shared: true, updatedMs: now };
28
+ save(db, next);
29
+ sendJson(res, 200, next);
30
+ }
31
+ /** `api/saved?project=` lists and adds; `api/saved/:id` reads, changes, and deletes. */
32
+ export async function handleSaved(db, sub, req, res, url, now) {
33
+ const method = req.method ?? "GET";
34
+ const project = url.searchParams.get("project") ?? "";
35
+ const id = sub.split("/")[2];
36
+ if (id)
37
+ return onItem(db, method, project, decodeURIComponent(id), req, res, now);
38
+ if (method === "GET")
39
+ return sendJson(res, 200, { items: listSaved(db, project) });
40
+ if (method !== "POST")
41
+ return sendJson(res, 405, { error: "method not allowed" });
42
+ const input = parseSaved(await body(req));
43
+ if (typeof input === "string")
44
+ return sendJson(res, 400, { error: input });
45
+ const item = { ...input, id: randomUUID(), projectId: project, shared: true, owner: "", ownerName: "", createdMs: now, updatedMs: now };
46
+ save(db, item);
47
+ sendJson(res, 201, item);
48
+ }
49
+ //# sourceMappingURL=saved.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saved.js","sourceRoot":"","sources":["../src/saved.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,6 @@ import type { HubStore } from "./store.js";
5
5
  export declare const sqliteRunner: (db: DatabaseSync) => SqlRunner;
6
6
  /** Page needs from the hub's stats tables. Scope: an optional project and environment; the 1 h tier keeps `maxAgeMs`. */
7
7
  export declare function hubExecutor(store: HubStore, scope?: SqlScope, keepRemote?: (endpoint: string) => boolean): Executor;
8
- /** Traces in the scope still waiting for their stats, for `pageContext(..., settling)`. Null when none. */
9
- export declare function hubSettling(store: HubStore, scope?: SqlScope): number | null;
8
+ /** Traces in the scope whose stats run behind (written over `behindMs` ago, not settled), for `pageContext(..., settling)`. Null when none. */
9
+ export declare function hubSettling(store: HubStore, scope?: SqlScope, behindMs?: number): number | null;
10
10
  //# sourceMappingURL=scale-exec.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scale-exec.d.ts","sourceRoot":"","sources":["../src/scale-exec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,KAAK,QAAQ,EAAkB,KAAK,SAAS,EAAe,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEjH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,qDAAqD;AACrD,eAAO,MAAM,YAAY,OAAQ,YAAY,KAAG,SAE9C,CAAC;AAEH,yHAAyH;AACzH,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAE,QAAa,EAAE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,GAAG,QAAQ,CAQvH;AAED,2GAA2G;AAC3G,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAE,QAAa,GAAG,MAAM,GAAG,IAAI,CAEhF"}
1
+ {"version":3,"file":"scale-exec.d.ts","sourceRoot":"","sources":["../src/scale-exec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,KAAK,QAAQ,EAAoC,KAAK,SAAS,EAAe,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEnI,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,qDAAqD;AACrD,eAAO,MAAM,YAAY,OAAQ,YAAY,KAAG,SAE9C,CAAC;AAEH,yHAAyH;AACzH,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAE,QAAa,EAAE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,GAAG,QAAQ,CAQvH;AAED,+IAA+I;AAC/I,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAE,QAAa,EAAE,QAAQ,SAAmB,GAAG,MAAM,GAAG,IAAI,CAE7G"}
@@ -1,4 +1,4 @@
1
- import { SQLITE_DIALECT, sqlExecutor } from "@wizeworks/lens-core";
1
+ import { SETTLE_BEHIND_MS, SQLITE_DIALECT, sqlExecutor } from "@wizeworks/lens-core";
2
2
  import { settlingCount } from "./settle.js";
3
3
  import { getStoredTrace } from "./store-read.js";
4
4
  /** Reads for the SQL executor, on the hub's file. */
@@ -15,8 +15,8 @@ export function hubExecutor(store, scope = {}, keepRemote) {
15
15
  loadTrace: (id) => getStoredTrace(store.db, id, keepRemote) ?? null,
16
16
  });
17
17
  }
18
- /** Traces in the scope still waiting for their stats, for `pageContext(..., settling)`. Null when none. */
19
- export function hubSettling(store, scope = {}) {
20
- return settlingCount(store.db, scope) || null;
18
+ /** Traces in the scope whose stats run behind (written over `behindMs` ago, not settled), for `pageContext(..., settling)`. Null when none. */
19
+ export function hubSettling(store, scope = {}, behindMs = SETTLE_BEHIND_MS) {
20
+ return settlingCount(store.db, scope, store.now() - behindMs) || null;
21
21
  }
22
22
  //# sourceMappingURL=scale-exec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scale-exec.js","sourceRoot":"","sources":["../src/scale-exec.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,cAAc,EAAkB,WAAW,EAAiB,MAAM,sBAAsB,CAAC;AACjH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,qDAAqD;AACrD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAgB,EAAa,EAAE,CAAC,CAAC;IAC5D,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAI,MAA0B,CAA8B;CAC7G,CAAC,CAAC;AAEH,yHAAyH;AACzH,MAAM,UAAU,WAAW,CAAC,KAAe,EAAE,KAAK,GAAa,EAAE,EAAE,UAA0C;IAC3G,OAAO,WAAW,CAAC;QACjB,CAAC,EAAE,cAAc;QACjB,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,KAAK;QACL,WAAW,EAAE,KAAK,CAAC,QAAQ;QAC3B,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,IAAI,IAAI;KACpE,CAAC,CAAC;AACL,CAAC;AAED,2GAA2G;AAC3G,MAAM,UAAU,WAAW,CAAC,KAAe,EAAE,KAAK,GAAa,EAAE;IAC/D,OAAO,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"scale-exec.js","sourceRoot":"","sources":["../src/scale-exec.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,gBAAgB,EAAE,cAAc,EAAkB,WAAW,EAAiB,MAAM,sBAAsB,CAAC;AACnI,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,qDAAqD;AACrD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAgB,EAAa,EAAE,CAAC,CAAC;IAC5D,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAI,MAA0B,CAA8B;CAC7G,CAAC,CAAC;AAEH,yHAAyH;AACzH,MAAM,UAAU,WAAW,CAAC,KAAe,EAAE,KAAK,GAAa,EAAE,EAAE,UAA0C;IAC3G,OAAO,WAAW,CAAC;QACjB,CAAC,EAAE,cAAc;QACjB,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,KAAK;QACL,WAAW,EAAE,KAAK,CAAC,QAAQ;QAC3B,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,IAAI,IAAI;KACpE,CAAC,CAAC;AACL,CAAC;AAED,+IAA+I;AAC/I,MAAM,UAAU,WAAW,CAAC,KAAe,EAAE,KAAK,GAAa,EAAE,EAAE,QAAQ,GAAG,gBAAgB;IAC5F,OAAO,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,IAAI,CAAC;AACxE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { DatabaseSync } from "node:sqlite";
2
+ import { type SavedItem } from "@wizeworks/lens-core";
3
+ interface OldRow {
4
+ id: string;
5
+ project: string;
6
+ name: string;
7
+ params: string;
8
+ created_ms: number;
9
+ }
10
+ /** The saved item an old log search becomes: shared, as every hub item is, and drawn as a chart. */
11
+ export declare const itemOfOldSearch: (r: OldRow) => SavedItem;
12
+ /** Move every old log search into `saved`, then drop `saved_searches`. Nothing to do when the table is gone. */
13
+ export declare function moveSavedSearches(db: DatabaseSync): void;
14
+ export {};
15
+ //# sourceMappingURL=schema-saved.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-saved.d.ts","sourceRoot":"","sources":["../src/schema-saved.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGrE,UAAU,MAAM;IACd,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAUD,oGAAoG;AACpG,eAAO,MAAM,eAAe,MAAO,MAAM,KAAG,SAa1C,CAAC;AAEH,gHAAgH;AAChH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAaxD"}