@localstack/appinspector-ui 1.0.145 → 1.0.147

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.cjs CHANGED
@@ -15112,7 +15112,7 @@ var ICONS_MAP = {
15112
15112
  };
15113
15113
  var AwsServiceIconBase = (0, import_react33.memo)((props) => {
15114
15114
  const Icon = ICONS_MAP[props.service];
15115
- return Icon ? /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(Icon, { ...props }) : void 0;
15115
+ return Icon ? /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(Icon, { ...props }) : null;
15116
15116
  });
15117
15117
  var supportedServiceNames = Object.keys(ICONS_MAP);
15118
15118
 
@@ -16643,17 +16643,6 @@ var import_react44 = require("react");
16643
16643
  // src/api/client.ts
16644
16644
  var import_semver2 = __toESM(require_semver2(), 1);
16645
16645
 
16646
- // src/utils/time.ts
16647
- function unixNanoToDate(unixNanoString) {
16648
- const milliseconds = unixNanoToMilliseconds(unixNanoString);
16649
- if (!milliseconds) return void 0;
16650
- return new Date(milliseconds);
16651
- }
16652
- function unixNanoToMilliseconds(unixNanoString) {
16653
- if (!unixNanoString) return void 0;
16654
- return Number(BigInt(unixNanoString) / BigInt("1000000"));
16655
- }
16656
-
16657
16646
  // src/constants/error-messages.ts
16658
16647
  var ERROR_MESSAGES = {
16659
16648
  APP_INSPECTOR_DISABLED: "App Inspector is currently disabled.",
@@ -16707,6 +16696,17 @@ var createScopedLogger = (scope) => ({
16707
16696
  }
16708
16697
  });
16709
16698
 
16699
+ // src/utils/time.ts
16700
+ function unixNanoToDate(unixNanoString) {
16701
+ const milliseconds = unixNanoToMilliseconds(unixNanoString);
16702
+ if (!milliseconds) return void 0;
16703
+ return new Date(milliseconds);
16704
+ }
16705
+ function unixNanoToMilliseconds(unixNanoString) {
16706
+ if (!unixNanoString) return void 0;
16707
+ return Number(BigInt(unixNanoString) / BigInt("1000000"));
16708
+ }
16709
+
16710
16710
  // src/api/client.ts
16711
16711
  var apiLogger = createScopedLogger("API");
16712
16712
  var analyticsLogger = createScopedLogger("ANALYTICS");
@@ -32066,10 +32066,17 @@ var TraceGraph = ({
32066
32066
  });
32067
32067
  }
32068
32068
  }
32069
+ allNodes.sort((a3, b3) => {
32070
+ const tsA = a3.data.event.start_time_unix_nano;
32071
+ const tsB = b3.data.event.start_time_unix_nano;
32072
+ return tsA < tsB ? -1 : tsA > tsB ? 1 : 0;
32073
+ });
32069
32074
  const knownSpanIds = new Set(allNodes.map((node) => node.id));
32070
- const validEdges = allEdges.filter(
32071
- (edge) => knownSpanIds.has(edge.source) && knownSpanIds.has(edge.target)
32072
- );
32075
+ const validEdges = allEdges.filter((edge) => knownSpanIds.has(edge.source) && knownSpanIds.has(edge.target)).toSorted((edgeA, edgeB) => {
32076
+ const tsA = allNodes.find((n) => n.id === edgeA.target)?.data.event.start_time_unix_nano ?? "";
32077
+ const tsB = allNodes.find((n) => n.id === edgeB.target)?.data.event.start_time_unix_nano ?? "";
32078
+ return tsA < tsB ? -1 : tsA > tsB ? 1 : 0;
32079
+ });
32073
32080
  const { edges: layoutedEdges, nodes: layoutedNodes } = getLayoutedNodesAndEdges(allNodes, validEdges);
32074
32081
  for (const node of layoutedNodes) {
32075
32082
  if (node.id === initialFocusEventId) {
@@ -32232,7 +32239,14 @@ var TraceGraphView = ({
32232
32239
  ]
32233
32240
  }
32234
32241
  );
32235
- async function fetchConnectedTraces(api, traceIds, allSpans = /* @__PURE__ */ new Map(), processedTraceIds = /* @__PURE__ */ new Set()) {
32242
+ async function fetchConnectedTraces(api, traceId) {
32243
+ const response = await api.getSpans({ trace_id: traceId, with_span_links: true });
32244
+ if (response.with_span_links) {
32245
+ return response.spans;
32246
+ }
32247
+ return fetchConnectedTracesWaterfall(api, [traceId]);
32248
+ }
32249
+ async function fetchConnectedTracesWaterfall(api, traceIds, allSpans = /* @__PURE__ */ new Map(), processedTraceIds = /* @__PURE__ */ new Set()) {
32236
32250
  const newTraceIds = traceIds.filter((id2) => !processedTraceIds.has(id2));
32237
32251
  if (newTraceIds.length === 0) {
32238
32252
  return [...allSpans.values()];
@@ -32257,7 +32271,7 @@ async function fetchConnectedTraces(api, traceIds, allSpans = /* @__PURE__ */ ne
32257
32271
  }
32258
32272
  }
32259
32273
  if (discoveredTraceIds.size > 0) {
32260
- return fetchConnectedTraces(
32274
+ return fetchConnectedTracesWaterfall(
32261
32275
  api,
32262
32276
  [...discoveredTraceIds],
32263
32277
  allSpans,
@@ -32275,7 +32289,7 @@ var TraceGraphPage = ({ onClose, spanId, traceId }) => {
32275
32289
  const fetchSpans = (0, import_react62.useCallback)(async () => {
32276
32290
  setLoading(true);
32277
32291
  try {
32278
- const spans2 = await fetchConnectedTraces(api, [traceId]);
32292
+ const spans2 = await fetchConnectedTraces(api, traceId);
32279
32293
  setSpans(spans2);
32280
32294
  setFetchError(void 0);
32281
32295
  } catch (error) {