From f47dffb2eac7163894630d131e76670c2618f9f6 Mon Sep 17 00:00:00 2001 From: Gordon Smith Date: Thu, 4 Jul 2024 09:44:10 +0100 Subject: [PATCH 01/12] HPCC-32185 Prevent metrics timeline from making a duplicate WUDetails call Signed-off-by: Gordon Smith --- esp/src/src-react/components/Metrics.tsx | 45 +++++---------------- esp/src/src/Timings.ts | 50 +++++++++++++++++++++++- 2 files changed, 57 insertions(+), 38 deletions(-) diff --git a/esp/src/src-react/components/Metrics.tsx b/esp/src/src-react/components/Metrics.tsx index ee05e3055e3..8ef04ccb5cc 100644 --- a/esp/src/src-react/components/Metrics.tsx +++ b/esp/src/src-react/components/Metrics.tsx @@ -9,7 +9,7 @@ import { WorkunitsServiceEx, IScope, splitMetric } from "@hpcc-js/comms"; import { DBStore, Table } from "@hpcc-js/dgrid"; import { compare, scopedLogger } from "@hpcc-js/util"; import nlsHPCC from "src/nlsHPCC"; -import { WUTimelinePatched } from "src/Timings"; +import { WUTimelineNoFetch } from "src/Timings"; import * as Utility from "src/Utility"; import { FetchStatus, useMetricsOptions, useWUQueryMetrics, MetricsOptions as MetricsOptionsT } from "../hooks/metrics"; import { HolyGrail } from "../layouts/HolyGrail"; @@ -200,40 +200,10 @@ export const Metrics: React.FunctionComponent = ({ }, [parentUrl, selection]); // Timeline --- - const timeline = useConst(() => new WUTimelinePatched() + const timeline = useConst(() => new WUTimelineNoFetch() .maxZoom(Number.MAX_SAFE_INTEGER) - .baseUrl("") - .request({ - ScopeFilter: { - MaxDepth: 3, - ScopeTypes: [] - }, - NestedFilter: { - Depth: 0, - ScopeTypes: [] - }, - PropertiesToReturn: { - AllProperties: false, - AllStatistics: true, - AllHints: false, - Properties: ["WhenStarted", "TimeElapsed", "TimeLocalExecute"] - }, - ScopeOptions: { - IncludeId: true, - IncludeScope: true, - IncludeScopeType: true - }, - PropertyOptions: { - IncludeName: true, - IncludeRawValue: true, - IncludeFormatted: true, - IncludeMeasure: true, - IncludeCreator: true, - IncludeCreatorType: false - } - }) .on("click", (row, col, sel) => { - setTimelineFilter(sel ? row[7].ScopeName : ""); + setTimelineFilter(sel ? row[7].__hpcc_id : ""); if (sel) { setSelectedMetricsSource("scopesTable"); pushUrl(`${parentUrl}/${row[7].Id}`); @@ -242,8 +212,11 @@ export const Metrics: React.FunctionComponent = ({ ); React.useEffect(() => { - timeline.wuid(wuid); - }, [timeline, wuid]); + timeline + .scopes(metrics) + .lazyRender() + ; + }, [metrics, timeline]); // Scopes Table --- const [scopeFilter, setScopeFilter] = React.useState(""); @@ -427,7 +400,7 @@ export const Metrics: React.FunctionComponent = ({ if (fetchStatus === FetchStatus.STARTED) { return nlsHPCC.FetchingData; } else if (!isLayoutComplete) { - return `${nlsHPCC.PerformingLayout} (${dot.split("\n").length})`; + return `${nlsHPCC.PerformingLayout}(${dot.split("\n").length})`; } else if (!isRenderComplete) { return nlsHPCC.RenderSVG; } diff --git a/esp/src/src/Timings.ts b/esp/src/src/Timings.ts index c7db66385e5..3aa90c8894e 100644 --- a/esp/src/src/Timings.ts +++ b/esp/src/src/Timings.ts @@ -1,6 +1,6 @@ import { Column } from "@hpcc-js/chart"; import { ascending as d3Ascending, max as d3Max, scaleLinear as d3ScaleLinear, select as d3Select } from "@hpcc-js/common"; -import { Workunit } from "@hpcc-js/comms"; +import { IScope, Workunit } from "@hpcc-js/comms"; import { WUTimeline } from "@hpcc-js/eclwatch"; import { ChartPanel } from "@hpcc-js/layout"; @@ -39,7 +39,9 @@ export class WUTimelinePatched extends WUTimeline { ; this._gantt["_series_idx"] = -1; this.strokeWidth(0); - this.tooltipHTML(d => ""); + this.tooltipHTML(d => { + return d[7].__hpcc_id; + }); } data(): any; @@ -59,6 +61,50 @@ export class WUTimelinePatched extends WUTimeline { } } +export class WUTimelineNoFetch extends WUTimelinePatched { + + constructor() { + super(); + } + + protected _scopes: IScope[] = []; + scopes(): IScope[]; + scopes(_: IScope[]): this; + scopes(_?: IScope[]): IScope[] | this { + if (arguments.length === 0) return this._scopes; + this._scopes = _; + return this; + } + + fetchScopes() { + const data = this._scopes.filter(scope => { + if (!scope.__hpcc_id) { + scope.__hpcc_id = scope.name; + } + return scope.id && + scope.WhenStarted && (scope.WhenFinished || scope.TimeElapsed) && + scope.type !== "activity"; + }).map((scope: IScope) => { + let whenFinished = scope.WhenFinished; + if (!whenFinished) { + const d = new Date(scope.WhenStarted); + d.setMilliseconds(d.getMilliseconds() + scope.TimeElapsed * 1000); + whenFinished = d.toISOString(); + } + return [ + scope.id, + scope.WhenStarted, + whenFinished, + null, + this._palette(scope.type), + scope.name.split("::").join(":").split(":").slice(0, 1), + scope + ]; + }); + this.data(data); + } +} + export class Timings { private wu: Workunit; From 7e2727c6f2dc994e55e00e499b1614d69f7d066e Mon Sep 17 00:00:00 2001 From: Gordon Smith Date: Fri, 5 Jul 2024 17:03:19 +0100 Subject: [PATCH 02/12] HPCC-32210 WU Next/Previous + Metrics shows incorrect graph Wrong graph is rendered when the user clicks on a scope item Signed-off-by: Gordon Smith --- esp/src/src-react/components/Metrics.tsx | 49 ++++++++++++------- esp/src/src-react/components/MetricsSQL.tsx | 15 ++++-- .../src-react/components/WorkunitDetails.tsx | 2 +- 3 files changed, 43 insertions(+), 23 deletions(-) diff --git a/esp/src/src-react/components/Metrics.tsx b/esp/src/src-react/components/Metrics.tsx index fc33b2791b9..4f39a3ab2e7 100644 --- a/esp/src/src-react/components/Metrics.tsx +++ b/esp/src/src-react/components/Metrics.tsx @@ -202,15 +202,20 @@ export const Metrics: React.FunctionComponent = ({ // Timeline --- const timeline = useConst(() => new WUTimelineNoFetch() .maxZoom(Number.MAX_SAFE_INTEGER) - .on("click", (row, col, sel) => { - setTimelineFilter(sel ? row[7].__hpcc_id : ""); - if (sel) { - setSelectedMetricsSource("scopesTable"); - pushUrl(`${parentUrl}/${row[7].Id}`); - } - }) ); + React.useEffect(() => { + timeline + .on("click", (row, col, sel) => { + setTimelineFilter(sel ? row[7].__hpcc_id : ""); + if (sel) { + setSelectedMetricsSource("scopesTable"); + pushUrl(`${parentUrl}/${row[7].Id}`); + } + }, true) + ; + }, [parentUrl, timeline]); + React.useEffect(() => { timeline .scopes(metrics) @@ -233,13 +238,18 @@ export const Metrics: React.FunctionComponent = ({ .multiSelect(true) .metrics([], options, timelineFilter, scopeFilter) .sortable(true) - .on("click", debounce((row, col, sel) => { - if (sel) { - scopesSelectionChanged("scopesTable", scopesTable.selection()); - } - }, 100)) ); + React.useEffect(() => { + scopesTable + .on("click", debounce((row, col, sel) => { + if (sel) { + scopesSelectionChanged("scopesTable", scopesTable.selection()); + } + }), true) + ; + }, [scopesSelectionChanged, scopesTable]); + React.useEffect(() => { scopesTable .metrics(metrics, options, timelineFilter, scopeFilter) @@ -265,13 +275,18 @@ export const Metrics: React.FunctionComponent = ({ const metricGraphWidget = useConst(() => new MetricGraphWidget() .zoomToFitLimit(1) .selectionGlowColor("DodgerBlue") - .on("selectionChanged", () => { - const selection = metricGraphWidget.selection().filter(id => metricGraph.item(id)).map(id => metricGraph.item(id).id); - setSelectedMetricsSource("metricGraphWidget"); - pushUrl(`${parentUrl}/${selection.join(",")}`); - }) ); + React.useEffect(() => { + metricGraphWidget + .on("selectionChanged", () => { + const selection = metricGraphWidget.selection().filter(id => metricGraph.item(id)).map(id => metricGraph.item(id).id); + setSelectedMetricsSource("metricGraphWidget"); + pushUrl(`${parentUrl}/${selection.join(",")}`); + }, true) + ; + }, [metricGraph, metricGraphWidget, parentUrl]); + React.useEffect(() => { metricGraph.load(metrics); }, [metrics, metricGraph]); diff --git a/esp/src/src-react/components/MetricsSQL.tsx b/esp/src/src-react/components/MetricsSQL.tsx index 76d202ac20e..a8df066f50a 100644 --- a/esp/src/src-react/components/MetricsSQL.tsx +++ b/esp/src/src-react/components/MetricsSQL.tsx @@ -54,13 +54,18 @@ export const MetricsSQL: React.FunctionComponent = ({ .multiSelect(true) .sortable(true) .noDataMessage(nlsHPCC.loadingMessage) - .on("click", debounce((row, col, sel) => { - if (sel) { - onSelectionChanged(scopesTable.selection()); - } - }, 100)) ); + React.useEffect(() => { + scopesTable + .on("click", debounce((row, col, sel) => { + if (sel) { + onSelectionChanged(scopesTable.selection()); + } + }, 100), true) + ; + }, [onSelectionChanged, scopesTable]); + React.useEffect(() => { if (columns.length === 0 && data.length === 0 && sqlError) { scopesTable diff --git a/esp/src/src-react/components/WorkunitDetails.tsx b/esp/src/src-react/components/WorkunitDetails.tsx index d7e84120d13..8e595bf7b16 100644 --- a/esp/src/src-react/components/WorkunitDetails.tsx +++ b/esp/src/src-react/components/WorkunitDetails.tsx @@ -206,7 +206,7 @@ export const WorkunitDetails: React.FunctionComponent = ({ }> - + From 46a02c066687ba8d5a852763772a409957dae850 Mon Sep 17 00:00:00 2001 From: Jake Smith Date: Mon, 8 Jul 2024 11:23:06 +0100 Subject: [PATCH 03/12] HPCC-32202 Remove unused member variable, causing compile issues Signed-off-by: Jake Smith --- thorlcr/thorutil/thbuf.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/thorlcr/thorutil/thbuf.cpp b/thorlcr/thorutil/thbuf.cpp index 5ab144e8ee9..42457777dae 100644 --- a/thorlcr/thorutil/thbuf.cpp +++ b/thorlcr/thorutil/thbuf.cpp @@ -695,7 +695,6 @@ class CCompressedSpillingRowStream: public CSimpleInterfaceOf, Linked serializer; Linked allocator; Linked deserializer; - memsize_t compressionBlockSize = 0; // filled in createOutputStream // in-memory related members CSPSCQueue inMemRows; From 48c90a49493679790f9a65dae3e766e384ff49ad Mon Sep 17 00:00:00 2001 From: M Kelly Date: Thu, 20 Jun 2024 12:19:39 -0400 Subject: [PATCH 04/12] HPCC-32103 Roxie crash in soapcall after reaching TIMELIMIT Signed-off-by: M Kelly --- common/thorhelper/thorsoapcall.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/common/thorhelper/thorsoapcall.cpp b/common/thorhelper/thorsoapcall.cpp index bee4d69b47d..2e9635fc886 100644 --- a/common/thorhelper/thorsoapcall.cpp +++ b/common/thorhelper/thorsoapcall.cpp @@ -2642,12 +2642,11 @@ class CWSCAsyncFor : implements IWSCAsyncFor, public CInterface, public CAsyncFo { // other roxie exception ... master->logctx.CTXLOG("Exiting: received Roxie exception"); + master->activitySpanScope->recordException(e, true, true); if (e->errorRow()) processException(url, e->errorRow(), e); else processException(url, inputRows, e); - - master->activitySpanScope->recordException(e, true, true); break; } } @@ -2657,10 +2656,10 @@ class CWSCAsyncFor : implements IWSCAsyncFor, public CInterface, public CAsyncFo persistentHandler->doneUsing(socket, false); if (master->timeLimitExceeded) { - processException(url, inputRows, e); VStringBuffer msg("%s exiting: time limit (%ums) exceeded", getWsCallTypeName(master->wscType), master->timeLimitMS); master->logctx.CTXLOG("%s", msg.str()); master->activitySpanScope->recordError(SpanError(msg.str(), e->errorCode(), true, true)); + processException(url, inputRows, e); break; } From 43cbd8b368408c9bf110a6d2c41334a3b1c40fb0 Mon Sep 17 00:00:00 2001 From: Jeremy Clements <79224539+jeclrsg@users.noreply.github.com> Date: Mon, 8 Jul 2024 13:00:06 -0400 Subject: [PATCH 05/12] HPCC-32209 ECL Watch v9 fix result filter dialog blank form Fixes an issue where the Result (WU or file contents) page's Filter dialog would be empty, not displaying any fields. Also fixes the issue of the Result filter fields not updating when using the Next / Previous WU buttons. Signed-off-by: Jeremy Clements <79224539+jeclrsg@users.noreply.github.com> --- esp/src/src-react/components/Result.tsx | 27 +++++++++++++++---------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/esp/src/src-react/components/Result.tsx b/esp/src/src-react/components/Result.tsx index 505bef943a8..a9d47294417 100644 --- a/esp/src/src-react/components/Result.tsx +++ b/esp/src/src-react/components/Result.tsx @@ -11,7 +11,7 @@ import { csvEncode } from "src/Utility"; import { useWorkunit, useMyAccount, useConfirm } from "../hooks/index"; import { HolyGrail } from "../layouts/HolyGrail"; import { AutosizeHpccJSComponent } from "../layouts/HpccJSAdapter"; -import { pushParams } from "../util/history"; +import { pushParams, replaceUrl } from "../util/history"; import { ShortVerticalDivider } from "./Common"; import { Fields } from "./forms/Fields"; import { Filter } from "./forms/Filter"; @@ -243,6 +243,12 @@ export const Result: React.FunctionComponent = ({ .pageSize(50) as ResultWidget ); + const { currentUser } = useMyAccount(); + const [wu] = useWorkunit(wuid); + const [result, setResult] = React.useState(resultTable.calcResult()); + const [FilterFields, setFilterFields] = React.useState({}); + const [showFilter, setShowFilter] = React.useState(false); + React.useEffect(() => { resultTable .wuid(wuid) @@ -251,7 +257,7 @@ export const Result: React.FunctionComponent = ({ .logicalFile(logicalFile) .filter(filter) .renderHtml(renderHTML) - .lazyRender() + .render(() => setResult(resultTable.calcResult())) ; }, [cluster, filter, logicalFile, renderHTML, resultName, resultTable, wuid]); @@ -259,12 +265,6 @@ export const Result: React.FunctionComponent = ({ resultTable.filter(filter); }, [filter, resultTable]); - const { currentUser } = useMyAccount(); - const [wu] = useWorkunit(wuid); - const [result] = React.useState(resultTable.calcResult()); - const [FilterFields, setFilterFields] = React.useState({}); - const [showFilter, setShowFilter] = React.useState(false); - React.useEffect(() => { result?.fetchXMLSchema().then(() => { const filterFields: Fields = {}; @@ -276,8 +276,13 @@ export const Result: React.FunctionComponent = ({ }; }); setFilterFields(filterFields); - }).catch(err => logger.error(err)); - }, [result]); + }).catch(err => { + logger.error(err); + if (err.message.indexOf("Cannot open the workunit result") > -1) { + replaceUrl(`/workunits/${wuid}/outputs/`); + } + }); + }, [result, wuid]); // Filter --- const [filterFields, hasHtml] = React.useMemo(() => { @@ -310,7 +315,7 @@ export const Result: React.FunctionComponent = ({ key: "refresh", text: nlsHPCC.Refresh, iconProps: { iconName: "Refresh" }, onClick: () => { resultTable.reset(); - resultTable.lazyRender(); + resultTable.render(() => setResult(resultTable.calcResult())); } }, { key: "divider_1", itemType: ContextualMenuItemType.Divider, onRender: () => }, From ac7e153e726b0ec3f75f22457f2723c0a7526353 Mon Sep 17 00:00:00 2001 From: Gordon Smith Date: Fri, 5 Jul 2024 07:55:41 +0100 Subject: [PATCH 06/12] HPCC-32118 Default to case-insensitive metric filtering Introduced an option to toggle between case-sensitive and case-insensitive filtering Signed-off-by: Gordon Smith --- esp/src/src-react/components/Metrics.tsx | 61 +++++++++++-------- .../components/MetricsPropertiesTables.tsx | 7 ++- esp/src/src/nls/hpcc.ts | 1 + 3 files changed, 40 insertions(+), 29 deletions(-) diff --git a/esp/src/src-react/components/Metrics.tsx b/esp/src/src-react/components/Metrics.tsx index 4f39a3ab2e7..8d6bff38a8a 100644 --- a/esp/src/src-react/components/Metrics.tsx +++ b/esp/src/src-react/components/Metrics.tsx @@ -1,9 +1,9 @@ import * as React from "react"; -import { CommandBar, ContextualMenuItemType, ICommandBarItemProps, IIconProps, SearchBox } from "@fluentui/react"; -import { Label, Spinner } from "@fluentui/react-components"; +import { CommandBar, ContextualMenuItemType, ICommandBarItemProps, IIconProps, SearchBox, Stack } from "@fluentui/react"; +import { Label, Spinner, ToggleButton } from "@fluentui/react-components"; import { typographyStyles } from "@fluentui/react-theme"; import { useConst } from "@fluentui/react-hooks"; -import { bundleIcon, Folder20Filled, Folder20Regular, FolderOpen20Filled, FolderOpen20Regular, } from "@fluentui/react-icons"; +import { bundleIcon, Folder20Filled, Folder20Regular, FolderOpen20Filled, FolderOpen20Regular, TextCaseTitleRegular, TextCaseTitleFilled } from "@fluentui/react-icons"; import { Database } from "@hpcc-js/common"; import { WorkunitsServiceEx, IScope, splitMetric } from "@hpcc-js/comms"; import { DBStore, Table } from "@hpcc-js/dgrid"; @@ -55,7 +55,7 @@ class TableEx extends Table { this._store = new DBStoreEx(this, this._db); } - scopeFilterFunc(row: object, scopeFilter: string): boolean { + scopeFilterFunc(row: object, scopeFilter: string, matchCase: boolean): boolean { const filter = scopeFilter.trim(); if (filter) { let field = ""; @@ -64,12 +64,14 @@ class TableEx extends Table { field = filter.substring(0, colonIdx); } if (field) { - return row[field]?.indexOf && row[field]?.indexOf(filter.substring(colonIdx + 1)) >= 0; + const value: string = !matchCase ? row[field]?.toString().toLowerCase() : row[field]?.toString(); + const filterValue: string = !matchCase ? filter.toLowerCase() : filter; + return value?.indexOf(filterValue.substring(colonIdx + 1)) >= 0 ?? false; } - for (const key in row) { - if (row[key]?.indexOf && row[key]?.indexOf(filter) >= 0) { - return true; - } + for (const field in row) { + const value: string = !matchCase ? row[field].toString().toLowerCase() : row[field].toString(); + const filterValue: string = !matchCase ? filter.toLowerCase() : filter; + return value?.indexOf(filterValue) >= 0 ?? false; } return false; } @@ -77,12 +79,12 @@ class TableEx extends Table { } _rawDataMap: { [id: number]: string } = {}; - metrics(metrics: any[], options: MetricsOptionsT, timelineFilter: string, scopeFilter: string): this { + metrics(metrics: any[], options: MetricsOptionsT, timelineFilter: string, scopeFilter: string, matchCase: boolean): this { this .columns(["##"]) // Reset hash to force recalculation of default widths .columns(["##", nlsHPCC.Type, nlsHPCC.Scope, ...options.properties]) .data(metrics - .filter(m => this.scopeFilterFunc(m, scopeFilter)) + .filter(m => this.scopeFilterFunc(m, scopeFilter, matchCase)) .filter(row => { return (timelineFilter === "" || row.name?.indexOf(timelineFilter) === 0) && (options.scopeTypes.indexOf(row.type) >= 0); @@ -170,6 +172,7 @@ export const Metrics: React.FunctionComponent = ({ const [isLayoutComplete, setIsLayoutComplete] = React.useState(false); const [isRenderComplete, setIsRenderComplete] = React.useState(false); const [dot, setDot] = React.useState(""); + const [matchCase, setMatchCase] = React.useState(false); React.useEffect(() => { const service = new WorkunitsServiceEx({ baseUrl: "" }); @@ -236,7 +239,7 @@ export const Metrics: React.FunctionComponent = ({ const scopesTable = useConst(() => new TableEx() .multiSelect(true) - .metrics([], options, timelineFilter, scopeFilter) + .metrics([], options, timelineFilter, scopeFilter, matchCase) .sortable(true) ); @@ -252,10 +255,10 @@ export const Metrics: React.FunctionComponent = ({ React.useEffect(() => { scopesTable - .metrics(metrics, options, timelineFilter, scopeFilter) + .metrics(metrics, options, timelineFilter, scopeFilter, matchCase) .render() ; - }, [metrics, options, scopeFilter, scopesTable, timelineFilter]); + }, [matchCase, metrics, options, scopeFilter, scopesTable, timelineFilter]); const updateScopesTable = React.useCallback((selection: IScope[]) => { if (scopesTable?.renderCount() > 0) { @@ -435,13 +438,13 @@ export const Metrics: React.FunctionComponent = ({ }, [lineage, selectedLineage]); // Props Table --- - const propsTable2 = useConst(() => new Table() + const crossTabTable = useConst(() => new Table() .columns([nlsHPCC.Property, nlsHPCC.Value]) .columnWidth("auto") .sortable(true) ); - const updatePropsTable2 = React.useCallback((selection: IScope[]) => { + const updateCrossTabTable = React.useCallback((selection: IScope[]) => { const columns = []; const props = []; selection.forEach(item => { @@ -458,12 +461,13 @@ export const Metrics: React.FunctionComponent = ({ }); props.push(row); }); - propsTable2 - ?.columns(columns) - ?.data(props) - ?.lazyRender() + crossTabTable + .columns([]) + .columns(columns) + .data(props) + .lazyRender() ; - }, [propsTable2]); + }, [crossTabTable]); React.useEffect(() => { const dot = metricGraph.graphTpl(selectedLineage ? [selectedLineage] : [], options); @@ -491,7 +495,7 @@ export const Metrics: React.FunctionComponent = ({ React.useEffect(() => { if (selectedMetrics) { updateScopesTable(selectedMetrics); - updatePropsTable2(selectedMetrics); + updateCrossTabTable(selectedMetrics); updateLineage(selectedMetrics); } // eslint-disable-next-line react-hooks/exhaustive-deps @@ -595,13 +599,13 @@ export const Metrics: React.FunctionComponent = ({ const setShowMetricOptionsHook = React.useCallback((show: boolean) => { setShowMetricOptions(show); scopesTable - .metrics(metrics, options, timelineFilter, scopeFilter) + .metrics(metrics, options, timelineFilter, scopeFilter, matchCase) .render(() => { updateScopesTable(selectedMetrics); }) ; - }, [metrics, options, scopeFilter, scopesTable, selectedMetrics, timelineFilter, updateScopesTable]); + }, [matchCase, metrics, options, scopeFilter, scopesTable, selectedMetrics, timelineFilter, updateScopesTable]); return @@ -613,7 +617,12 @@ export const Metrics: React.FunctionComponent = ({ } + header={ + + + + : } title={nlsHPCC.MatchCase} checked={matchCase} onClick={() => { setMatchCase(!matchCase); }} /> + } main={} /> @@ -643,7 +652,7 @@ export const Metrics: React.FunctionComponent = ({ - + diff --git a/esp/src/src-react/components/MetricsPropertiesTables.tsx b/esp/src/src-react/components/MetricsPropertiesTables.tsx index 83d8a894cff..9763fa04654 100644 --- a/esp/src/src-react/components/MetricsPropertiesTables.tsx +++ b/esp/src/src-react/components/MetricsPropertiesTables.tsx @@ -22,7 +22,6 @@ export const MetricsPropertiesTables: React.FunctionComponent new Table() .columns([nlsHPCC.Property, nlsHPCC.Value, "Avg", "Min", "Max", "Delta", "StdDev", "SkewMin", "SkewMax", "NodeMin", "NodeMax"]) - .columnWidth("auto") .sortable(true) ); @@ -53,8 +52,10 @@ export const MetricsPropertiesTables: React.FunctionComponent Date: Mon, 8 Jul 2024 07:01:49 +0100 Subject: [PATCH 07/12] HPCC-31683 Highlight metrics with outlier values Signed-off-by: Gordon Smith --- esp/src/package-lock.json | 599 ++++++++++-------- esp/src/package.json | 32 +- esp/src/src-react/components/Metrics.tsx | 32 +- .../components/MetricsPropertiesTables.tsx | 25 +- esp/src/src-react/components/MetricsSQL.tsx | 14 +- esp/src/src-react/hooks/duckdb.ts | 14 +- esp/src/src-react/util/metricGraph.ts | 2 + 7 files changed, 419 insertions(+), 299 deletions(-) diff --git a/esp/src/package-lock.json b/esp/src/package-lock.json index 363b1424c2d..42a17c1b2cc 100644 --- a/esp/src/package-lock.json +++ b/esp/src/package-lock.json @@ -15,22 +15,22 @@ "@fluentui/react-hooks": "8.7.0", "@fluentui/react-icons-mdl2": "1.3.59", "@fluentui/react-migration-v8-v9": "9.6.3", - "@hpcc-js/chart": "2.83.3", - "@hpcc-js/codemirror": "2.62.0", - "@hpcc-js/common": "2.71.17", - "@hpcc-js/comms": "2.92.3", - "@hpcc-js/dataflow": "8.1.6", - "@hpcc-js/eclwatch": "2.74.5", - "@hpcc-js/graph": "2.85.15", - "@hpcc-js/html": "2.42.20", - "@hpcc-js/layout": "2.49.22", - "@hpcc-js/map": "2.77.21", - "@hpcc-js/other": "2.15.22", - "@hpcc-js/phosphor": "2.18.8", - "@hpcc-js/react": "2.53.16", - "@hpcc-js/tree": "2.40.17", - "@hpcc-js/util": "2.51.0", - "@hpcc-js/wasm": "2.17.1", + "@hpcc-js/chart": "2.83.4", + "@hpcc-js/codemirror": "2.62.1", + "@hpcc-js/common": "2.71.18", + "@hpcc-js/comms": "2.93.0", + "@hpcc-js/dataflow": "8.1.7", + "@hpcc-js/eclwatch": "2.74.8", + "@hpcc-js/graph": "2.85.16", + "@hpcc-js/html": "2.42.21", + "@hpcc-js/layout": "2.49.23", + "@hpcc-js/map": "2.77.22", + "@hpcc-js/other": "2.15.23", + "@hpcc-js/phosphor": "2.18.9", + "@hpcc-js/react": "2.53.17", + "@hpcc-js/tree": "2.40.18", + "@hpcc-js/util": "2.51.1", + "@hpcc-js/wasm": "2.18.0", "@kubernetes/client-node": "0.20.0", "clipboard": "2.0.11", "d3-dsv": "3.0.1", @@ -1809,38 +1809,41 @@ } }, "node_modules/@hpcc-js/api": { - "version": "2.12.17", - "resolved": "https://registry.npmjs.org/@hpcc-js/api/-/api-2.12.17.tgz", - "integrity": "sha512-NuqjPdxnfbpFQ0e2c0ZBC/hYItPDOTiysO+xfR03SSTqZqxdcME1EEYHI6/wIAb3B+rQ3gk3Xss7EvKq6t+puw==", + "version": "2.12.18", + "resolved": "https://registry.npmjs.org/@hpcc-js/api/-/api-2.12.18.tgz", + "integrity": "sha512-Iq00B6q9DGGoLe+PTm4mJjaopfHRQbd6A3rNW968vZDmtgBh3Vcn2ie/Ym/Dbcf3UjSuWjaldaLKksqvgIbmtw==", + "license": "Apache-2.0", "dependencies": { - "@hpcc-js/common": "^2.71.17" + "@hpcc-js/common": "^2.71.18" } }, "node_modules/@hpcc-js/chart": { - "version": "2.83.3", - "resolved": "https://registry.npmjs.org/@hpcc-js/chart/-/chart-2.83.3.tgz", - "integrity": "sha512-CKTnjQ4PhK/g7o/ZvNA3o+AkCLIu/ttkkqDyPmiFQU9an7qXfAVyJyPk9e2/QCeRaTQV1YmMUAj94iZvK9E0Gg==", + "version": "2.83.4", + "resolved": "https://registry.npmjs.org/@hpcc-js/chart/-/chart-2.83.4.tgz", + "integrity": "sha512-rIE6OSEbh9Z75l0fkP0rDjZuBi60lXDMsBlaG42YBgnZpWKIQHydkGDOnq7q7jC3PedvSgOnr3ZRJL8ZBA1iXg==", + "license": "Apache-2.0", "dependencies": { - "@hpcc-js/api": "^2.12.17", - "@hpcc-js/common": "^2.71.17", - "@hpcc-js/util": "^2.51.0" + "@hpcc-js/api": "^2.12.18", + "@hpcc-js/common": "^2.71.18", + "@hpcc-js/util": "^2.51.1" } }, "node_modules/@hpcc-js/codemirror": { - "version": "2.62.0", - "resolved": "https://registry.npmjs.org/@hpcc-js/codemirror/-/codemirror-2.62.0.tgz", - "integrity": "sha512-KgVvmPKVJWS6nG3pLsGxRApLRo259Tpf0EEIHQtbqFQHbFHQLr9r2T6aAMtoh4eehqvkqUedsorCCnmlfZCx7A==", + "version": "2.62.1", + "resolved": "https://registry.npmjs.org/@hpcc-js/codemirror/-/codemirror-2.62.1.tgz", + "integrity": "sha512-p/sG+En3UG5grGx00maZ8wjUuuUGb/6flzlq+bSIDNldwqaheWZscGPaJdxLa+aSvcFbXXrDgcV4dhhd70xEyA==", "license": "Apache-2.0", "dependencies": { - "@hpcc-js/common": "^2.71.17" + "@hpcc-js/common": "^2.71.18" } }, "node_modules/@hpcc-js/common": { - "version": "2.71.17", - "resolved": "https://registry.npmjs.org/@hpcc-js/common/-/common-2.71.17.tgz", - "integrity": "sha512-Fyo7U/1hFgV7ZEkiOSj92UYEEtj0T73KV7w09yyD36paSS0wFLTNaFoiFJRVRgmQF8P/LVBgC1lrB7LnYdfFNA==", + "version": "2.71.18", + "resolved": "https://registry.npmjs.org/@hpcc-js/common/-/common-2.71.18.tgz", + "integrity": "sha512-9hsDYXsjB2ltmomAAPQUfNUv/FPrHDkE4e7t62nNH7HCN3ZrkgOgbNjdrfPPHwtcz5+j4kH6hjV0hbhVgocs5Q==", + "license": "Apache-2.0", "dependencies": { - "@hpcc-js/util": "^2.51.0", + "@hpcc-js/util": "^2.51.1", "@types/d3-array": "1.2.12", "@types/d3-brush": "1.1.8", "@types/d3-collection": "1.0.13", @@ -1859,9 +1862,10 @@ } }, "node_modules/@hpcc-js/comms": { - "version": "2.92.3", - "resolved": "https://registry.npmjs.org/@hpcc-js/comms/-/comms-2.92.3.tgz", - "integrity": "sha512-0mrIb4kXGTVnvHBpRZk+yas108sSXgIKq6HAGSv/ZJFCXEoKCynoaSH+DFaD9jcfZrVezn4fbjJtqYxXln86tA==", + "version": "2.93.0", + "resolved": "https://registry.npmjs.org/@hpcc-js/comms/-/comms-2.93.0.tgz", + "integrity": "sha512-FZBiLiraUFGoSnYB6PUv5zMIHcDbdT2TOzRjHl8CF84UK9C9G6G5L19mYwvVOWKTeuSvwaOyOqeOZ6ELcQObrA==", + "license": "Apache-2.0", "dependencies": { "@hpcc-js/ddl-shim": "^2.20.7", "@hpcc-js/util": "^2.51.1", @@ -1873,14 +1877,6 @@ "undici": "5.28.4" } }, - "node_modules/@hpcc-js/comms/node_modules/@hpcc-js/util": { - "version": "2.51.1", - "resolved": "https://registry.npmjs.org/@hpcc-js/util/-/util-2.51.1.tgz", - "integrity": "sha512-BJuqg6FGqcV4RR8/BU5e7fASDtkl0Na7dWY+Th7r5ciWKI5AXsO0GtlgwDBt2uLUOlcGOMpYozmdbGSCoSHAvQ==", - "dependencies": { - "tslib": "2.6.3" - } - }, "node_modules/@hpcc-js/comms/node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -1900,15 +1896,11 @@ } ] }, - "node_modules/@hpcc-js/comms/node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" - }, "node_modules/@hpcc-js/dataflow": { - "version": "8.1.6", - "resolved": "https://registry.npmjs.org/@hpcc-js/dataflow/-/dataflow-8.1.6.tgz", - "integrity": "sha512-BMmpA6CP00nRDdeq7MS/LRN+e08dyBnnLWEITK5zuEn8D9sFo4ZJlmrKNp+Lcox/m+CuNqWMTG9Z5c+hK2jUyw==" + "version": "8.1.7", + "resolved": "https://registry.npmjs.org/@hpcc-js/dataflow/-/dataflow-8.1.7.tgz", + "integrity": "sha512-91s3ch++5ufPh+dmyPckA9VXuuc61H+P9SjWBVdB0l3mZ649XbXc6r0JcVKrmOF+ONZ5P01tz2tB8kEAw+nMRA==", + "license": "Apache-2.0" }, "node_modules/@hpcc-js/ddl-shim": { "version": "2.20.7", @@ -1923,130 +1915,141 @@ } }, "node_modules/@hpcc-js/dgrid": { - "version": "2.32.20", - "resolved": "https://registry.npmjs.org/@hpcc-js/dgrid/-/dgrid-2.32.20.tgz", - "integrity": "sha512-hCD6nIfWT1RWHBTIAqMs2uJUQSE7hBKLqa6pLFRmlByL7Egev+m5ErR4+aMn9NjqhjE0/HqpwwYnTNoMoVw83w==", + "version": "2.32.23", + "resolved": "https://registry.npmjs.org/@hpcc-js/dgrid/-/dgrid-2.32.23.tgz", + "integrity": "sha512-wWMJ+YJNeuW+aXdWjDIEfLfcnfSf2TydsZ6weTbJxFAydvn7dkito2qWwPfXYSlMQ8iZztXng8M/ddJ0P2M7zg==", + "license": "Apache-2.0", "dependencies": { - "@hpcc-js/common": "^2.71.17", - "@hpcc-js/ddl-shim": "^2.20.6", - "@hpcc-js/dgrid-shim": "^2.24.10", - "@hpcc-js/util": "^2.51.0" + "@hpcc-js/common": "^2.71.18", + "@hpcc-js/ddl-shim": "^2.20.7", + "@hpcc-js/dgrid-shim": "^2.24.11", + "@hpcc-js/util": "^2.51.1" } }, "node_modules/@hpcc-js/dgrid-shim": { - "version": "2.24.10", - "resolved": "https://registry.npmjs.org/@hpcc-js/dgrid-shim/-/dgrid-shim-2.24.10.tgz", - "integrity": "sha512-4PD4GvKn2/HQvgzeP+Gd0Halj4KySk0QW1C7dqfyNWV8AUaseT9SSUvyu2ftGPUrzq65sJ0fSaq4zh3Js9dbaQ==" + "version": "2.24.11", + "resolved": "https://registry.npmjs.org/@hpcc-js/dgrid-shim/-/dgrid-shim-2.24.11.tgz", + "integrity": "sha512-rWKAKrlO0GA5FwktWmVBEw0TxmRQp+x2fw+MHL0ksYjMGMcRgaV4sD4DKH5GlLlMQwrmIsmbWdOgz7mV5dPOtA==", + "license": "Apache-2.0" }, "node_modules/@hpcc-js/dgrid2": { - "version": "2.3.19", - "resolved": "https://registry.npmjs.org/@hpcc-js/dgrid2/-/dgrid2-2.3.19.tgz", - "integrity": "sha512-K0GCX2GR+sayN1glQAEmqdFt+ZcvF3ZU3xwO/LpcA6HGqnN3ena+CeCEE1ufqfLICwPu5P/X+kMd+GJoDY51+w==", + "version": "2.3.20", + "resolved": "https://registry.npmjs.org/@hpcc-js/dgrid2/-/dgrid2-2.3.20.tgz", + "integrity": "sha512-+9e0LBFKELADY2UhZ6Pj15EGfoW1OVzMiUli2xprebpTtzrJaFESQ6c+8OfqiSuFGvACxlVABq4GvlB8ohHkKw==", + "license": "Apache-2.0", "dependencies": { - "@hpcc-js/common": "^2.71.17", - "@hpcc-js/preact-shim": "^2.16.10", - "@hpcc-js/util": "^2.51.0" + "@hpcc-js/common": "^2.71.18", + "@hpcc-js/preact-shim": "^2.16.11", + "@hpcc-js/util": "^2.51.1" } }, "node_modules/@hpcc-js/eclwatch": { - "version": "2.74.5", - "resolved": "https://registry.npmjs.org/@hpcc-js/eclwatch/-/eclwatch-2.74.5.tgz", - "integrity": "sha512-KGpefRbFD0ZIOq7eV3kF6Of2uG7wFA8C2o/vUUUy5+E+eG46qZRGqo2G4jLYqXbbCQ1RO8XHVcnXfeWR1XB4AQ==", + "version": "2.74.8", + "resolved": "https://registry.npmjs.org/@hpcc-js/eclwatch/-/eclwatch-2.74.8.tgz", + "integrity": "sha512-kcszxO1eAKYirVTpgzvUKjn9W6hnOdOOSrC9L+bu8fGf8j62C2D0aFOrNsXg3ZV3BnQRxjZt+1z2K3TwttB+hg==", "license": "Apache-2.0", "dependencies": { - "@hpcc-js/codemirror": "^2.62.0", - "@hpcc-js/common": "^2.71.17", - "@hpcc-js/comms": "^2.92.2", - "@hpcc-js/dgrid": "^2.32.20", - "@hpcc-js/graph": "^2.85.15", - "@hpcc-js/layout": "^2.49.22", - "@hpcc-js/phosphor": "^2.18.8", - "@hpcc-js/timeline": "^2.51.25", - "@hpcc-js/tree": "^2.40.17", - "@hpcc-js/util": "^2.51.0" + "@hpcc-js/codemirror": "^2.62.1", + "@hpcc-js/common": "^2.71.18", + "@hpcc-js/comms": "^2.93.0", + "@hpcc-js/dgrid": "^2.32.23", + "@hpcc-js/graph": "^2.85.16", + "@hpcc-js/layout": "^2.49.23", + "@hpcc-js/phosphor": "^2.18.9", + "@hpcc-js/timeline": "^2.51.26", + "@hpcc-js/tree": "^2.40.18", + "@hpcc-js/util": "^2.51.1" } }, "node_modules/@hpcc-js/graph": { - "version": "2.85.15", - "resolved": "https://registry.npmjs.org/@hpcc-js/graph/-/graph-2.85.15.tgz", - "integrity": "sha512-1LGhS4tywbCPs6b0XObLRiuf3fU16QysTrIA/7F6FUB7w5ay6oiR8tzGTP87SNHZ7fvZ36TAXOyKi/jHJbaf1A==", + "version": "2.85.16", + "resolved": "https://registry.npmjs.org/@hpcc-js/graph/-/graph-2.85.16.tgz", + "integrity": "sha512-egJdVtAv8PPGVMj1ZColHYROZvXO/KZq/Y/+1aEuXmS8WIXoJo8fCV2SRHo9LmPUrh57ffT/DYhg3xpvcWw+VQ==", + "license": "Apache-2.0", "dependencies": { - "@hpcc-js/api": "^2.12.17", - "@hpcc-js/common": "^2.71.17", - "@hpcc-js/html": "^2.42.20", - "@hpcc-js/react": "^2.53.16", - "@hpcc-js/util": "^2.51.0" + "@hpcc-js/api": "^2.12.18", + "@hpcc-js/common": "^2.71.18", + "@hpcc-js/html": "^2.42.21", + "@hpcc-js/react": "^2.53.17", + "@hpcc-js/util": "^2.51.1" } }, "node_modules/@hpcc-js/html": { - "version": "2.42.20", - "resolved": "https://registry.npmjs.org/@hpcc-js/html/-/html-2.42.20.tgz", - "integrity": "sha512-LozHVD0THMJ1IUjbTsmzskoWYobc5siv1S4rgl6sAy1R8etnTgWkpDMgmIFLNS97A3XizpCebJwBfeEN6KsDpg==", + "version": "2.42.21", + "resolved": "https://registry.npmjs.org/@hpcc-js/html/-/html-2.42.21.tgz", + "integrity": "sha512-acNRDb2jnHzEue1irdGut2zSxaxvOVd3uFPdTCJjJpOpqNqQ2jphGYU2EdOiyO/uApVGmmvONeGLfnWtqeGPig==", + "license": "Apache-2.0", "dependencies": { - "@hpcc-js/common": "^2.71.17", - "@hpcc-js/preact-shim": "^2.16.10", - "@hpcc-js/util": "^2.51.0" + "@hpcc-js/common": "^2.71.18", + "@hpcc-js/preact-shim": "^2.16.11", + "@hpcc-js/util": "^2.51.1" } }, "node_modules/@hpcc-js/layout": { - "version": "2.49.22", - "resolved": "https://registry.npmjs.org/@hpcc-js/layout/-/layout-2.49.22.tgz", - "integrity": "sha512-iNCUUpsA3y6bRQC087Enix3d5vpXoQKxr8FoYVkJFji/UooWU2zJelRPwx7Ky8e1t6Jz2uYxqWI30J5wy8h0HA==", + "version": "2.49.23", + "resolved": "https://registry.npmjs.org/@hpcc-js/layout/-/layout-2.49.23.tgz", + "integrity": "sha512-JhKf9UqzRt0H9PlRnghRfAiKPucvbsHwuLzjR3w965VKSMgX2M+bqZDbG0ch45kLq81sNcpmn6UupEq/8E4Wpw==", + "license": "Apache-2.0", "dependencies": { - "@hpcc-js/api": "^2.12.17", - "@hpcc-js/chart": "^2.83.3", - "@hpcc-js/common": "^2.71.17", - "@hpcc-js/dgrid2": "^2.3.19" + "@hpcc-js/api": "^2.12.18", + "@hpcc-js/chart": "^2.83.4", + "@hpcc-js/common": "^2.71.18", + "@hpcc-js/dgrid2": "^2.3.20" } }, "node_modules/@hpcc-js/leaflet-shim": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@hpcc-js/leaflet-shim/-/leaflet-shim-2.3.5.tgz", - "integrity": "sha512-XwqtJTI/J5Bn4iun7Aw5bgW3C0obr4sZILKxRjB4J0H4cAuRBtohhXiDyxanjI9qELh3BcqBNfj8yLukwaganw==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@hpcc-js/leaflet-shim/-/leaflet-shim-2.3.6.tgz", + "integrity": "sha512-7eXs0/8gika93i3hb2oaxXiQJxQuV5tO8tQm7PpzzwyzjGI+t622/msrFR1NnAGnywso8YGGBqnQkqxsS1sE3Q==", + "license": "Apache-2.0", "dependencies": { "@types/leaflet": "1.9.8", "leaflet": "1.9.4" } }, "node_modules/@hpcc-js/map": { - "version": "2.77.21", - "resolved": "https://registry.npmjs.org/@hpcc-js/map/-/map-2.77.21.tgz", - "integrity": "sha512-LJHDvpvpllYlapQ9xzqw46oMCyn3WfLNIEeBadrtIoxr7xLFrS2dEXkgydv2BwbRIZNHgjXZPqKfbsWBHqph5w==", + "version": "2.77.22", + "resolved": "https://registry.npmjs.org/@hpcc-js/map/-/map-2.77.22.tgz", + "integrity": "sha512-znQ6UioWkkJJkuOPoPndk/OHDmcPSOu07EqQVr+GtEacJqmI6B/z9Ltdl920A/2Mr2SDYLaZAgvvR6wjvlInPw==", + "license": "Apache-2.0", "dependencies": { - "@hpcc-js/api": "^2.12.17", - "@hpcc-js/common": "^2.71.17", - "@hpcc-js/graph": "^2.85.15", - "@hpcc-js/layout": "^2.49.22", - "@hpcc-js/leaflet-shim": "^2.3.5", - "@hpcc-js/other": "^2.15.22", - "@hpcc-js/util": "^2.51.0" + "@hpcc-js/api": "^2.12.18", + "@hpcc-js/common": "^2.71.18", + "@hpcc-js/graph": "^2.85.16", + "@hpcc-js/layout": "^2.49.23", + "@hpcc-js/leaflet-shim": "^2.3.6", + "@hpcc-js/other": "^2.15.23", + "@hpcc-js/util": "^2.51.1" } }, "node_modules/@hpcc-js/other": { - "version": "2.15.22", - "resolved": "https://registry.npmjs.org/@hpcc-js/other/-/other-2.15.22.tgz", - "integrity": "sha512-r1dv7Fswrf9SBbmr437k+CpEvzZJJjpGSUCrF2JrMztHpsFZed4qlo9agIVp5RksXxQf7SPMI9IXWthYIUG5LQ==", + "version": "2.15.23", + "resolved": "https://registry.npmjs.org/@hpcc-js/other/-/other-2.15.23.tgz", + "integrity": "sha512-79oV6+lEyKUwxqtMRje2Dh32N6g0Qdcu2+YRUo351A6rU0KWwPTnMl3+u24IfxjVUC6b39PNKoU9c70JjohYOQ==", + "license": "Apache-2.0", "dependencies": { - "@hpcc-js/api": "^2.12.17", - "@hpcc-js/common": "^2.71.17", - "@hpcc-js/layout": "^2.49.22" + "@hpcc-js/api": "^2.12.18", + "@hpcc-js/common": "^2.71.18", + "@hpcc-js/layout": "^2.49.23" } }, "node_modules/@hpcc-js/phosphor": { - "version": "2.18.8", - "resolved": "https://registry.npmjs.org/@hpcc-js/phosphor/-/phosphor-2.18.8.tgz", - "integrity": "sha512-/D7lXuuPoeUuCmaBv/JMjmThKu3zl0j2/m7LxTJ9ltFmu7KkMNQK6EYLc0+VRVWrxa9P8hXMlLCXN0YlXtKTww==", + "version": "2.18.9", + "resolved": "https://registry.npmjs.org/@hpcc-js/phosphor/-/phosphor-2.18.9.tgz", + "integrity": "sha512-xhJMgMvrWVkzmzOEFKPLltf9jV8eEN8cZ3nkcm6GXEQte84RsHLbKHeUfUH2iZZjJeSA/xNTivdp7aDZaC+Xhw==", + "license": "Apache-2.0", "dependencies": { - "@hpcc-js/common": "^2.71.17", - "@hpcc-js/other": "^2.15.22", - "@hpcc-js/phosphor-shim": "^2.14.6", - "@hpcc-js/util": "^2.51.0" + "@hpcc-js/common": "^2.71.18", + "@hpcc-js/other": "^2.15.23", + "@hpcc-js/phosphor-shim": "^2.14.7", + "@hpcc-js/util": "^2.51.1" } }, "node_modules/@hpcc-js/phosphor-shim": { - "version": "2.14.6", - "resolved": "https://registry.npmjs.org/@hpcc-js/phosphor-shim/-/phosphor-shim-2.14.6.tgz", - "integrity": "sha512-PUCt29OdcMY/48kbBVvHQyZ+Dhr2MTvWlpQI2K04CIovZZ6Z7lkEmzRxf+VGfM9vhGWP9Amb6tf3MFrZK2+WSw==", + "version": "2.14.7", + "resolved": "https://registry.npmjs.org/@hpcc-js/phosphor-shim/-/phosphor-shim-2.14.7.tgz", + "integrity": "sha512-Xu/kSr1kqs//4yGAkiX08Kq7VaGAPRU2Cbvj47NDMdwEtmzT8qm9npTomKvaK0yYYjcLZNwC5liRb74z1HKdIg==", + "license": "Apache-2.0", "dependencies": { "@lumino/algorithm": "1.9.2", "@lumino/commands": "1.21.1", @@ -2055,56 +2058,67 @@ } }, "node_modules/@hpcc-js/preact-shim": { - "version": "2.16.10", - "resolved": "https://registry.npmjs.org/@hpcc-js/preact-shim/-/preact-shim-2.16.10.tgz", - "integrity": "sha512-D8gXsXcFDRlLO76LrRgn7a7JqJmDUKzvOzGrud4u/6Se2AsMipncXQe8Yg6EFRedDjfiQnoZZRvmz+uXXD+bdg==", + "version": "2.16.11", + "resolved": "https://registry.npmjs.org/@hpcc-js/preact-shim/-/preact-shim-2.16.11.tgz", + "integrity": "sha512-pYaRMTpNXEam3qUoCZPoKJvvePVMMhZ9rBbQ6q0z7Ri4Lsq6chXCGTKVrTImafPbNWoMOZVPQE6L8+0Iu1PYzw==", + "license": "Apache-2.0", "dependencies": { - "preact": "10.20.1" + "preact": "10.22.0" } }, "node_modules/@hpcc-js/react": { - "version": "2.53.16", - "resolved": "https://registry.npmjs.org/@hpcc-js/react/-/react-2.53.16.tgz", - "integrity": "sha512-pJ0/hE2MOCnaWFWBRyx1TEXV6x0bwPkoEKmwmGb72pCJQoVPaSKQ8bEi+UOHX+xxw0TF5x8u7fJHUjxvdcYMmQ==", + "version": "2.53.17", + "resolved": "https://registry.npmjs.org/@hpcc-js/react/-/react-2.53.17.tgz", + "integrity": "sha512-r2K+LqjPQ0VgCUxF+fOOhmCuBHQw2nr+SL4DL9MNrkqUDjFMNWG6YkiLEqb6dx6b/mVvWM1P+IWMrD4zIYLsfA==", + "license": "Apache-2.0", "dependencies": { - "@hpcc-js/common": "^2.71.17", - "@hpcc-js/preact-shim": "^2.16.10" + "@hpcc-js/common": "^2.71.18", + "@hpcc-js/preact-shim": "^2.16.11" } }, "node_modules/@hpcc-js/timeline": { - "version": "2.51.25", - "resolved": "https://registry.npmjs.org/@hpcc-js/timeline/-/timeline-2.51.25.tgz", - "integrity": "sha512-SS/67TomcrJaaMrtWYs9fk/TK0hr/ve/oBVux5Ibnph826xBB3Z5wt3tzfWYgzlvcsdGPFi6TF4FKFtYOTX9LA==", + "version": "2.51.26", + "resolved": "https://registry.npmjs.org/@hpcc-js/timeline/-/timeline-2.51.26.tgz", + "integrity": "sha512-CS73qPo7dVru/0M00IzJnL2YDxlhYMq7VNWDzBpNjLxRhUvvmKAUS4O7/dkuskBpT5SrpPcQc6gkOKvY4qjJbQ==", + "license": "Apache-2.0", "dependencies": { - "@hpcc-js/api": "^2.12.17", - "@hpcc-js/chart": "^2.83.3", - "@hpcc-js/common": "^2.71.17", - "@hpcc-js/html": "^2.42.20", - "@hpcc-js/layout": "^2.49.22", - "@hpcc-js/react": "^2.53.16" + "@hpcc-js/api": "^2.12.18", + "@hpcc-js/chart": "^2.83.4", + "@hpcc-js/common": "^2.71.18", + "@hpcc-js/html": "^2.42.21", + "@hpcc-js/layout": "^2.49.23", + "@hpcc-js/react": "^2.53.17" } }, "node_modules/@hpcc-js/tree": { - "version": "2.40.17", - "resolved": "https://registry.npmjs.org/@hpcc-js/tree/-/tree-2.40.17.tgz", - "integrity": "sha512-Z8uTo6281tcTMLUmNynYJEn5MiS5qkm76FcalgMJKaOduoUXL1YezDGFqo23y61JL6GpHdVRz/go9B5uI+Sapg==", + "version": "2.40.18", + "resolved": "https://registry.npmjs.org/@hpcc-js/tree/-/tree-2.40.18.tgz", + "integrity": "sha512-SWXgKs1JCSL1S1Xx0zBrbUd35fcDxhum573w4JiZzV5S8L0M7zhNTWvPn7joW5Q8Ox3jn1Hk/IQzcyBtVDyp0Q==", + "license": "Apache-2.0", "dependencies": { - "@hpcc-js/api": "^2.12.17", - "@hpcc-js/common": "^2.71.17" + "@hpcc-js/api": "^2.12.18", + "@hpcc-js/common": "^2.71.18" } }, "node_modules/@hpcc-js/util": { - "version": "2.51.0", - "resolved": "https://registry.npmjs.org/@hpcc-js/util/-/util-2.51.0.tgz", - "integrity": "sha512-xTcU3JhXA0OZQgu2LBLt7rh2O+107IILlEzUIBSS/rR/hVaVOKZK/Jtm5aMIevoAqD/XvKLf8RzurwCF7j/ccw==", + "version": "2.51.1", + "resolved": "https://registry.npmjs.org/@hpcc-js/util/-/util-2.51.1.tgz", + "integrity": "sha512-BJuqg6FGqcV4RR8/BU5e7fASDtkl0Na7dWY+Th7r5ciWKI5AXsO0GtlgwDBt2uLUOlcGOMpYozmdbGSCoSHAvQ==", + "license": "Apache-2.0", "dependencies": { - "tslib": "2.6.2" + "tslib": "2.6.3" } }, + "node_modules/@hpcc-js/util/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" + }, "node_modules/@hpcc-js/wasm": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/@hpcc-js/wasm/-/wasm-2.17.1.tgz", - "integrity": "sha512-IeQFVcRir9vRbJqG/Eje2S/sIHatw/cx7Mp62S+J5VKiglc56kNUe8CxuZIeJaIo6YEuhIio/KnE3XN9oPI1Pg==", + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/@hpcc-js/wasm/-/wasm-2.18.0.tgz", + "integrity": "sha512-M9XVIvAXGH4Xcyb5UoiohWcn6fil89pcos/gClNdBZG2v+W48xSf2bjcA8BW131X/AFHUerVY28n1P1Jw81/9A==", "license": "Apache-2.0", "dependencies": { "yargs": "17.7.2" @@ -2197,6 +2211,7 @@ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -2214,6 +2229,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2226,6 +2242,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2237,13 +2254,15 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -2261,6 +2280,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -2276,6 +2296,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -2365,6 +2386,7 @@ "version": "0.20.0", "resolved": "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-0.20.0.tgz", "integrity": "sha512-xxlv5GLX4FVR/dDKEsmi4SPeuB49aRc35stndyxcC73XnUEEwF39vXbROpHOirmDse8WE9vxOjABnSVS+jb7EA==", + "license": "Apache-2.0", "dependencies": { "@types/js-yaml": "^4.0.1", "@types/node": "^20.1.1", @@ -2395,12 +2417,14 @@ "node_modules/@lumino/algorithm": { "version": "1.9.2", "resolved": "https://registry.npmjs.org/@lumino/algorithm/-/algorithm-1.9.2.tgz", - "integrity": "sha512-Z06lp/yuhz8CtIir3PNTGnuk7909eXt4ukJsCzChsGuot2l5Fbs96RJ/FOHgwCedaX74CtxPjXHXoszFbUA+4A==" + "integrity": "sha512-Z06lp/yuhz8CtIir3PNTGnuk7909eXt4ukJsCzChsGuot2l5Fbs96RJ/FOHgwCedaX74CtxPjXHXoszFbUA+4A==", + "license": "BSD-3-Clause" }, "node_modules/@lumino/collections": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/@lumino/collections/-/collections-1.9.3.tgz", "integrity": "sha512-2i2Wf1xnfTgEgdyKEpqM16bcYRIhUOGCDzaVCEZACVG9R1CgYwOe3zfn71slBQOVSjjRgwYrgLXu4MBpt6YK+g==", + "license": "BSD-3-Clause", "dependencies": { "@lumino/algorithm": "^1.9.2" } @@ -2409,6 +2433,7 @@ "version": "1.21.1", "resolved": "https://registry.npmjs.org/@lumino/commands/-/commands-1.21.1.tgz", "integrity": "sha512-d1zJmwz5bHU0BM/Rl3tRdZ7/WgXnFB0bM7x7Bf0XDlmX++jnU9k0j3mh6/5JqCGLmIApKCRwVqSaV7jPmSJlcQ==", + "license": "BSD-3-Clause", "dependencies": { "@lumino/algorithm": "^1.9.2", "@lumino/coreutils": "^1.12.1", @@ -2423,6 +2448,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@lumino/coreutils/-/coreutils-1.12.1.tgz", "integrity": "sha512-JLu3nTHzJk9N8ohZ85u75YxemMrmDzJdNgZztfP7F7T7mxND3YVNCkJG35a6aJ7edu1sIgCjBxOvV+hv27iYvQ==", + "license": "BSD-3-Clause", "peerDependencies": { "crypto": "1.0.1" } @@ -2431,6 +2457,7 @@ "version": "1.10.4", "resolved": "https://registry.npmjs.org/@lumino/disposable/-/disposable-1.10.4.tgz", "integrity": "sha512-4ZxyYcyzUS+ZeB2KAH9oAH3w0DUUceiVr+FIZHZ2TAYGWZI/85WlqJtfm0xjwEpCwLLW1TDqJrISuZu3iMmVMA==", + "license": "BSD-3-Clause", "dependencies": { "@lumino/algorithm": "^1.9.2", "@lumino/signaling": "^1.11.1" @@ -2439,12 +2466,14 @@ "node_modules/@lumino/domutils": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/@lumino/domutils/-/domutils-1.8.2.tgz", - "integrity": "sha512-QIpMfkPJrs4GrWBuJf2Sn1fpyVPmvqUUAeD8xAQo8+4V5JAT0vUDLxZ9HijefMgNCi3+Bs8Z3lQwRCrz+cFP1A==" + "integrity": "sha512-QIpMfkPJrs4GrWBuJf2Sn1fpyVPmvqUUAeD8xAQo8+4V5JAT0vUDLxZ9HijefMgNCi3+Bs8Z3lQwRCrz+cFP1A==", + "license": "BSD-3-Clause" }, "node_modules/@lumino/dragdrop": { "version": "1.14.5", "resolved": "https://registry.npmjs.org/@lumino/dragdrop/-/dragdrop-1.14.5.tgz", "integrity": "sha512-LC5xB82+xGF8hFyl716TMpV32OIMIMl+s3RU1PaqDkD6B7PkgiVk6NkJ4X9/GcEvl2igkvlGQt/3L7qxDAJNxw==", + "license": "BSD-3-Clause", "dependencies": { "@lumino/coreutils": "^1.12.1", "@lumino/disposable": "^1.10.4" @@ -2453,12 +2482,14 @@ "node_modules/@lumino/keyboard": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/@lumino/keyboard/-/keyboard-1.8.2.tgz", - "integrity": "sha512-Dy+XqQ1wXbcnuYtjys5A0pAqf4SpAFl9NY6owyIhXAo0Va7w3LYp3jgiP1xAaBAwMuUppiUAfrbjrysZuZ625g==" + "integrity": "sha512-Dy+XqQ1wXbcnuYtjys5A0pAqf4SpAFl9NY6owyIhXAo0Va7w3LYp3jgiP1xAaBAwMuUppiUAfrbjrysZuZ625g==", + "license": "BSD-3-Clause" }, "node_modules/@lumino/messaging": { "version": "1.10.3", "resolved": "https://registry.npmjs.org/@lumino/messaging/-/messaging-1.10.3.tgz", "integrity": "sha512-F/KOwMCdqvdEG8CYAJcBSadzp6aI7a47Fr60zAKGqZATSRRRV41q53iXU7HjFPqQqQIvdn9Z7J32rBEAyQAzww==", + "license": "BSD-3-Clause", "dependencies": { "@lumino/algorithm": "^1.9.2", "@lumino/collections": "^1.9.3" @@ -2467,12 +2498,14 @@ "node_modules/@lumino/properties": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/@lumino/properties/-/properties-1.8.2.tgz", - "integrity": "sha512-EkjI9Cw8R0U+xC9HxdFSu7X1tz1H1vKu20cGvJ2gU+CXlMB1DvoYJCYxCThByHZ+kURTAap4SE5x8HvKwNPbig==" + "integrity": "sha512-EkjI9Cw8R0U+xC9HxdFSu7X1tz1H1vKu20cGvJ2gU+CXlMB1DvoYJCYxCThByHZ+kURTAap4SE5x8HvKwNPbig==", + "license": "BSD-3-Clause" }, "node_modules/@lumino/signaling": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@lumino/signaling/-/signaling-1.11.1.tgz", "integrity": "sha512-YCUmgw08VoyMN5KxzqPO3KMx+cwdPv28tAN06C0K7Q/dQf+oufb1XocuhZb5selTrTmmuXeizaYxgLIQGdS1fA==", + "license": "BSD-3-Clause", "dependencies": { "@lumino/algorithm": "^1.9.2", "@lumino/properties": "^1.8.2" @@ -2482,6 +2515,7 @@ "version": "1.14.3", "resolved": "https://registry.npmjs.org/@lumino/virtualdom/-/virtualdom-1.14.3.tgz", "integrity": "sha512-5joUC1yuxeXbpfbSBm/OR8Mu9HoTo6PDX0RKqzlJ9o97iml7zayFN/ynzcxScKGQAo9iaXOY8uVIvGUT8FnsGw==", + "license": "BSD-3-Clause", "dependencies": { "@lumino/algorithm": "^1.9.2" } @@ -2490,6 +2524,7 @@ "version": "1.37.2", "resolved": "https://registry.npmjs.org/@lumino/widgets/-/widgets-1.37.2.tgz", "integrity": "sha512-NHKu1NBDo6ETBDoNrqSkornfUCwc8EFFzw6+LWBfYVxn2PIwciq2SdiJGEyNqL+0h/A9eVKb5ui5z4cwpRekmQ==", + "license": "BSD-3-Clause", "dependencies": { "@lumino/algorithm": "^1.9.2", "@lumino/commands": "^1.21.1", @@ -2739,9 +2774,10 @@ } }, "node_modules/@octokit/openapi-types": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-19.0.2.tgz", - "integrity": "sha512-8li32fUDUeml/ACRp/njCWTsk5t17cfTM1jp9n08pBrqs5cDFJubtjsSnuz56r5Tad6jdEPJld7LxNp9dNcyjQ==" + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", + "license": "MIT" }, "node_modules/@octokit/plugin-paginate-graphql": { "version": "4.0.0", @@ -2769,17 +2805,18 @@ } }, "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "10.1.5", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.1.5.tgz", - "integrity": "sha512-LMEdsMV8TTMjMTqVoqMzV95XTbv0ZsWxCxQtjAunQOCdwoDH4BVF/Ke5JMSZEVCWGI2kzxnUNbFnK/MxwV7NjA==", + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz", + "integrity": "sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==", + "license": "MIT", "dependencies": { - "@octokit/types": "^12.3.0" + "@octokit/types": "^12.6.0" }, "engines": { "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=5" + "@octokit/core": "5" } }, "node_modules/@octokit/plugin-retry": { @@ -2841,11 +2878,12 @@ } }, "node_modules/@octokit/types": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.3.0.tgz", - "integrity": "sha512-nJ8X2HRr234q3w/FcovDlA+ttUU4m1eJAourvfUUtwAWeqL8AsyRqfnLvVnYn3NFbUnsmzQCzLNdFerPwdmcDQ==", + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "license": "MIT", "dependencies": { - "@octokit/openapi-types": "^19.0.2" + "@octokit/openapi-types": "^20.0.0" } }, "node_modules/@octokit/webhooks": { @@ -2880,6 +2918,7 @@ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=14" @@ -3120,9 +3159,10 @@ } }, "node_modules/@types/geojson": { - "version": "7946.0.13", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.13.tgz", - "integrity": "sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ==" + "version": "7946.0.14", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", + "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==", + "license": "MIT" }, "node_modules/@types/hoist-non-react-statics": { "version": "3.3.5", @@ -3171,6 +3211,7 @@ "version": "1.9.8", "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.8.tgz", "integrity": "sha512-EXdsL4EhoUtGm2GC2ZYtXn+Fzc6pluVgagvo2VC1RHWToLGlTRwVYoDpqS/7QXa01rmDyBjJk3Catpf60VMkwg==", + "license": "MIT", "dependencies": { "@types/geojson": "*" } @@ -4373,6 +4414,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", "engines": { "node": ">=10" } @@ -4836,6 +4878,7 @@ "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==", "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in.", + "license": "ISC", "peer": true }, "node_modules/css-loader": { @@ -4843,6 +4886,7 @@ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", "dev": true, + "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.33", @@ -4878,6 +4922,7 @@ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -5215,7 +5260,8 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ecc-jsbn": { "version": "0.1.2", @@ -6113,10 +6159,11 @@ } }, "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", "dev": true, + "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -6133,6 +6180,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -6171,6 +6219,7 @@ "url": "https://opencollective.com/formik" } ], + "license": "Apache-2.0", "dependencies": { "@types/hoist-non-react-statics": "^3.3.1", "deepmerge": "^2.1.1", @@ -6207,6 +6256,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -6214,6 +6264,18 @@ "node": ">= 8" } }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/fs-monkey": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", @@ -7213,15 +7275,16 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.2.tgz", + "integrity": "sha512-qH3nOSj8q/8+Eg8LUPOq3C+6HWkpUioIjDsq1+D4zY91oZvpPttw8GwtF1nReRYKXl+1AORyFqtm2f5Q1SB6/Q==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": ">=14" + "node": "14 >=14.21 || 16 >=16.20 || >=18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -7347,6 +7410,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-7.2.0.tgz", "integrity": "sha512-zBfiUPM5nD0YZSBT/o/fbCUlCcepMIdP0CJZxM1+KgA4f2T206f6VAg9e7mX35+KlMaIc5qXW34f3BnwJ3w+RA==", + "license": "MIT", "engines": { "node": ">=12.0.0" } @@ -7660,7 +7724,8 @@ "node_modules/leaflet": { "version": "1.9.4", "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", - "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==", + "license": "BSD-2-Clause" }, "node_modules/levn": { "version": "0.4.1", @@ -7730,6 +7795,7 @@ "resolved": "https://registry.npmjs.org/local-web-server/-/local-web-server-5.3.1.tgz", "integrity": "sha512-SYMIyQsyIGSlhZ+px0NgMumIzK69KCifweF24FApdNcRzMs/+ENlvesiGamBzEO6njljOvCbBuNQK/7hWMoCCA==", "dev": true, + "license": "MIT", "dependencies": { "current-module-paths": "^1.1.1", "lws": "^4.1.2", @@ -8242,12 +8308,10 @@ } }, "node_modules/minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dependencies": { - "yallist": "^4.0.0" - }, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", "engines": { "node": ">=8" } @@ -8256,6 +8320,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -8264,6 +8329,18 @@ "node": ">= 8" } }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -8723,6 +8800,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/octokit/-/octokit-3.1.2.tgz", "integrity": "sha512-MG5qmrTL5y8KYwFgE1A4JWmgfQBaIETE/lOlfwNYx1QOtCQHGVxkRJmdUJltFc1HVn73d61TlMhMyNTOtMl+ng==", + "license": "MIT", "dependencies": { "@octokit/app": "^14.0.2", "@octokit/core": "^5.0.0", @@ -8906,6 +8984,13 @@ "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -8975,38 +9060,28 @@ "dev": true }, "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", + "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/path-scurry/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } + "license": "ISC" }, "node_modules/path-to-regexp": { "version": "6.2.0", @@ -9108,10 +9183,11 @@ } }, "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", "dev": true, + "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -9120,10 +9196,11 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz", - "integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", "dev": true, + "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^6.0.2", @@ -9137,10 +9214,11 @@ } }, "node_modules/postcss-modules-scope": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz", - "integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", "dev": true, + "license": "ISC", "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -9167,10 +9245,11 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", - "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -9183,12 +9262,14 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/preact": { - "version": "10.20.1", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.20.1.tgz", - "integrity": "sha512-JIFjgFg9B2qnOoGiYMVBtrcFxHqn+dNXbq76bVmcaHYJFYR4lW67AOcXgAYQQTDYXDOg/kTZrKPNCdRgJ2UJmw==", + "version": "10.22.0", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.22.0.tgz", + "integrity": "sha512-RRurnSjJPj4rp5K6XoP45Ui33ncb7e4H7WiOHVpjbkvqvA3U+N8Z6Qbo0AE6leGYBV66n8EhEaFixvIu3SkxFw==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" @@ -9418,6 +9499,7 @@ "version": "7.51.2", "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.51.2.tgz", "integrity": "sha512-y++lwaWjtzDt/XNnyGDQy6goHskFualmDlf+jzEZvjvz6KWDf7EboL7pUvRCzPTJd0EOPpdekYaQLEvvG6m6HA==", + "license": "MIT", "engines": { "node": ">=12.22.0" }, @@ -9788,6 +9870,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^10.3.7" }, @@ -9806,37 +9889,38 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/rimraf/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/rimraf/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -9848,10 +9932,11 @@ } }, "node_modules/rimraf/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -10667,6 +10752,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -10736,6 +10822,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -10887,15 +10974,6 @@ "node": ">=10" } }, - "node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "license": "ISC", - "engines": { - "node": ">=8" - } - }, "node_modules/terser": { "version": "5.27.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz", @@ -11108,7 +11186,8 @@ "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "license": "0BSD" }, "node_modules/tsscmp": { "version": "1.0.6", @@ -11178,6 +11257,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz", "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -11888,6 +11968,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", diff --git a/esp/src/package.json b/esp/src/package.json index 6030c085361..bd8daf99417 100644 --- a/esp/src/package.json +++ b/esp/src/package.json @@ -41,22 +41,22 @@ "@fluentui/react-hooks": "8.7.0", "@fluentui/react-icons-mdl2": "1.3.59", "@fluentui/react-migration-v8-v9": "9.6.3", - "@hpcc-js/chart": "2.83.3", - "@hpcc-js/codemirror": "2.62.0", - "@hpcc-js/common": "2.71.17", - "@hpcc-js/comms": "2.92.3", - "@hpcc-js/dataflow": "8.1.6", - "@hpcc-js/eclwatch": "2.74.5", - "@hpcc-js/graph": "2.85.15", - "@hpcc-js/html": "2.42.20", - "@hpcc-js/layout": "2.49.22", - "@hpcc-js/map": "2.77.21", - "@hpcc-js/other": "2.15.22", - "@hpcc-js/phosphor": "2.18.8", - "@hpcc-js/react": "2.53.16", - "@hpcc-js/tree": "2.40.17", - "@hpcc-js/util": "2.51.0", - "@hpcc-js/wasm": "2.17.1", + "@hpcc-js/chart": "2.83.4", + "@hpcc-js/codemirror": "2.62.1", + "@hpcc-js/common": "2.71.18", + "@hpcc-js/comms": "2.93.0", + "@hpcc-js/dataflow": "8.1.7", + "@hpcc-js/eclwatch": "2.74.8", + "@hpcc-js/graph": "2.85.16", + "@hpcc-js/html": "2.42.21", + "@hpcc-js/layout": "2.49.23", + "@hpcc-js/map": "2.77.22", + "@hpcc-js/other": "2.15.23", + "@hpcc-js/phosphor": "2.18.9", + "@hpcc-js/react": "2.53.17", + "@hpcc-js/tree": "2.40.18", + "@hpcc-js/util": "2.51.1", + "@hpcc-js/wasm": "2.18.0", "@kubernetes/client-node": "0.20.0", "clipboard": "2.0.11", "d3-dsv": "3.0.1", diff --git a/esp/src/src-react/components/Metrics.tsx b/esp/src/src-react/components/Metrics.tsx index 8d6bff38a8a..ef64b498176 100644 --- a/esp/src/src-react/components/Metrics.tsx +++ b/esp/src/src-react/components/Metrics.tsx @@ -6,7 +6,7 @@ import { useConst } from "@fluentui/react-hooks"; import { bundleIcon, Folder20Filled, Folder20Regular, FolderOpen20Filled, FolderOpen20Regular, TextCaseTitleRegular, TextCaseTitleFilled } from "@fluentui/react-icons"; import { Database } from "@hpcc-js/common"; import { WorkunitsServiceEx, IScope, splitMetric } from "@hpcc-js/comms"; -import { DBStore, Table } from "@hpcc-js/dgrid"; +import { CellFormatter, ColumnFormat, ColumnType, DBStore, RowType, Table } from "@hpcc-js/dgrid"; import { compare, scopedLogger } from "@hpcc-js/util"; import nlsHPCC from "src/nlsHPCC"; import { WUTimelineNoFetch } from "src/Timings"; @@ -36,6 +36,16 @@ const defaultUIState = { hasSelection: false }; +class ColumnFormatEx extends ColumnFormat { + formatterFunc(): CellFormatter | undefined { + const colIdx = this._owner.columns().indexOf("__StdDevs"); + + return function (this: ColumnType, cell: any, row: RowType): string { + return row[colIdx]; + }; + } +} + class DBStoreEx extends DBStore { constructor(protected _table: TableEx, db: Database.Grid) { @@ -82,7 +92,17 @@ class TableEx extends Table { metrics(metrics: any[], options: MetricsOptionsT, timelineFilter: string, scopeFilter: string, matchCase: boolean): this { this .columns(["##"]) // Reset hash to force recalculation of default widths - .columns(["##", nlsHPCC.Type, nlsHPCC.Scope, ...options.properties]) + .columns(["##", nlsHPCC.Type, "StdDevs", nlsHPCC.Scope, ...options.properties, "__StdDevs"]) + .columnFormats([ + new ColumnFormatEx() + .column("StdDevs") + .paletteID("StdDevs") + .min(0) + .max(6), + new ColumnFormat() + .column("__StdDevs") + .width(0) + ]) .data(metrics .filter(m => this.scopeFilterFunc(m, scopeFilter, matchCase)) .filter(row => { @@ -91,21 +111,21 @@ class TableEx extends Table { }).map((row, idx) => { if (idx === 0) { this._rawDataMap = { - 0: "##", 1: "type", 2: "name" + 0: "##", 1: "type", 2: "__StdDevs", 3: "name" }; options.properties.forEach((p, idx2) => { - this._rawDataMap[3 + idx2] = p; + this._rawDataMap[4 + idx2] = p; }); } row.__hpcc_id = row.name; - return [idx, row.type, row.name, ...options.properties.map(p => { + return [idx, row.type, row.__StdDevs === 0 ? undefined : row.__StdDevs, row.name, ...options.properties.map(p => { return row.__groupedProps[p]?.Value ?? row.__groupedProps[p]?.Max ?? row.__groupedProps[p]?.Avg ?? row.__formattedProps[p] ?? row[p] ?? ""; - }), row]; + }), row.__StdDevsSource, row]; })) ; return this; diff --git a/esp/src/src-react/components/MetricsPropertiesTables.tsx b/esp/src/src-react/components/MetricsPropertiesTables.tsx index 9763fa04654..90347c94cbe 100644 --- a/esp/src/src-react/components/MetricsPropertiesTables.tsx +++ b/esp/src/src-react/components/MetricsPropertiesTables.tsx @@ -1,11 +1,15 @@ import * as React from "react"; import { useConst } from "@fluentui/react-hooks"; +import { Palette } from "@hpcc-js/common"; import { IScope } from "@hpcc-js/comms"; -import { Table } from "@hpcc-js/dgrid"; +import { ColumnFormat, Table } from "@hpcc-js/dgrid"; +import { formatDecimal } from "src/Utility"; import nlsHPCC from "src/nlsHPCC"; import { AutosizeHpccJSComponent } from "../layouts/HpccJSAdapter"; -interface MetricsPropertiesTablesProps { +Palette.rainbow("StdDevs", ["white", "white", "#fff0f0", "#ffC0C0", "#ff8080", "#ff0000", "#ff0000"]); + +export interface MetricsPropertiesTablesProps { scopesTableColumns?: string[]; scopes?: IScope[]; } @@ -21,7 +25,18 @@ export const MetricsPropertiesTables: React.FunctionComponent new Table() - .columns([nlsHPCC.Property, nlsHPCC.Value, "Avg", "Min", "Max", "Delta", "StdDev", "SkewMin", "SkewMax", "NodeMin", "NodeMax"]) + .columns([nlsHPCC.Property, nlsHPCC.Value, "Avg", "Min", "Max", "Delta", "StdDev", "SkewMin", "SkewMax", "NodeMin", "NodeMax", "StdDevs"]) + .columnFormats([ + new ColumnFormat() + .column(nlsHPCC.Property) + .paletteID("StdDevs") + .min(0) + .max(6) + .valueColumn("StdDevs"), + new ColumnFormat() + .column("StdDevs") + .width(0) + ]) .sortable(true) ); @@ -31,7 +46,7 @@ export const MetricsPropertiesTables: React.FunctionComponent { const lIdx = sortByColumns.indexOf(l[0]); @@ -53,7 +68,7 @@ export const MetricsPropertiesTables: React.FunctionComponent = ({ onSelectionChanged }) => { - const cleanScopes = React.useMemo(() => { - return scopes.map(scope => { - const retVal = { ...scope }; - delete retVal.__children; - return retVal; - }); - }, [scopes]); - - const connection = useDuckDBConnection(cleanScopes, "metrics"); + const connection = useDuckDBConnection(scopes, "metrics"); const [schema, setSchema] = React.useState([]); const [sql, setSql] = React.useState(defaultSql); const [sqlError, setSqlError] = React.useState(); @@ -91,7 +83,7 @@ export const MetricsSQL: React.FunctionComponent = ({ // Query --- React.useEffect(() => { - if (cleanScopes.length === 0) { + if (scopes.length === 0) { setSchema([]); setData([]); } else if (connection) { @@ -117,7 +109,7 @@ export const MetricsSQL: React.FunctionComponent = ({ scopesTable.noDataMessage(nlsHPCC.noDataMessage); }); } - }, [cleanScopes.length, connection, scopesTable, sql]); + }, [connection, scopes.length, scopesTable, sql]); // Selection --- const onChange = React.useCallback((newSql: string) => { diff --git a/esp/src/src-react/hooks/duckdb.ts b/esp/src/src-react/hooks/duckdb.ts index 75bfa8dd5cd..703b819978b 100644 --- a/esp/src/src-react/hooks/duckdb.ts +++ b/esp/src/src-react/hooks/duckdb.ts @@ -1,4 +1,5 @@ import * as React from "react"; +import { IScope } from "@hpcc-js/comms"; import { DuckDB } from "@hpcc-js/wasm/dist/duckdb"; type AsyncDuckDB = any; @@ -22,7 +23,7 @@ export function useDuckDB(): [AsyncDuckDB] { return [db]; } -export function useDuckDBConnection(scopes: T, name: string): AsyncDuckDBConnection | undefined { +export function useDuckDBConnection(scopes: IScope[], name: string): AsyncDuckDBConnection | undefined { const [db] = useDuckDB(); const [connection, setConnection] = React.useState(undefined); @@ -31,7 +32,16 @@ export function useDuckDBConnection(scopes: T, name: string): AsyncDuckDBConn let c: AsyncDuckDBConnection | undefined; if (db) { db.connect().then(async connection => { - await db.registerFileText(`${name}.json`, JSON.stringify(scopes)); + const scopesStr = JSON.stringify(scopes.map((scope, idx) => { + const row = {}; + for (const key in scope) { + if (key.indexOf("__") !== 0) { + row[key] = scope[key]; + } + } + return row; + })); + await db.registerFileText(`${name}.json`, scopesStr); await connection.insertJSONFromPath(`${name}.json`, { name }); await connection.close(); c = await db.connect(); diff --git a/esp/src/src-react/util/metricGraph.ts b/esp/src/src-react/util/metricGraph.ts index 5ec5f3dae2a..985e5a9c071 100644 --- a/esp/src/src-react/util/metricGraph.ts +++ b/esp/src/src-react/util/metricGraph.ts @@ -128,6 +128,8 @@ export class MetricGraph extends Graph2 { parent = this.ensureLineage({ __formattedProps: {}, __groupedProps: {}, + __StdDevs: 0, + __StdDevsSource: "", id: this.scopeID(scope.__parentName), name: scope.__parentName, type: "unknown", From 973edd04d66de512813c415caf5241547b05d295 Mon Sep 17 00:00:00 2001 From: Gordon Smith Date: Thu, 11 Jul 2024 12:40:50 +0100 Subject: [PATCH 08/12] HPCC-32232 Remove LN release actions Removes the creation of a release in the LN repo Removes the uploading of assets to the LN repo Signed-off-by: Gordon Smith --- .github/workflows/build-assets.yml | 36 ------------------------------ 1 file changed, 36 deletions(-) diff --git a/.github/workflows/build-assets.yml b/.github/workflows/build-assets.yml index 1d2dc3efac3..b86a32bfbf7 100644 --- a/.github/workflows/build-assets.yml +++ b/.github/workflows/build-assets.yml @@ -74,17 +74,6 @@ jobs: generateReleaseNotes: false prerelease: ${{ contains(github.ref, '-rc') }} - - name: Release LN - uses: ncipollo/release-action@v1.14.0 - with: - allowUpdates: true - generateReleaseNotes: false - prerelease: ${{ contains(github.ref, '-rc') }} - owner: ${{ secrets.LNB_ACTOR }} - repo: LN - token: ${{ secrets.LNB_TOKEN }} - tag: ${{ steps.vars.outputs.internal_tag }} - build-docker: name: Build Docker needs: preamble @@ -322,19 +311,6 @@ jobs: cmake -S /hpcc-dev/LN -B /hpcc-dev/build -DHPCC_SOURCE_DIR=/hpcc-dev/HPCC-Platform ${{ needs.preamble.outputs.cmake_docker_config }} -DSIGN_MODULES_PASSPHRASE=${{ secrets.SIGN_MODULES_PASSPHRASE }} -DSIGN_MODULES_KEYID=${{ secrets.SIGN_MODULES_KEYID }} -DINCLUDE_PLUGINS=ON -DCONTAINERIZED=ON -DSUPPRESS_REMBED=ON -DSUPPRESS_V8EMBED=ON -DSUPPRESS_SPARK=ON -DCPACK_STRIP_FILES=ON ${{ matrix.cmake_options_extra }} && \ cmake --build /hpcc-dev/build --parallel $(nproc) --target package" - - name: Upload Assets (internal) - if: ${{ matrix.ln }} - uses: ncipollo/release-action@v1.14.0 - with: - allowUpdates: true - generateReleaseNotes: false - prerelease: ${{ contains(github.ref, '-rc') }} - owner: ${{ secrets.LNB_ACTOR }} - repo: LN - token: ${{ secrets.LNB_TOKEN }} - tag: ${{ needs.preamble.outputs.internal_tag }} - artifacts: "${{ needs.preamble.outputs.folder_build }}/hpccsystems-*-internal*.deb,${{ needs.preamble.outputs.folder_build }}/hpccsystems-*-internal*.rpm" - - name: Upload Assets to Jfrog (debian internal) if: ${{ matrix.ln && !matrix.container && contains(matrix.os, 'ubuntu') && github.repository_owner == 'hpcc-systems'}} shell: bash @@ -495,18 +471,6 @@ jobs: cmake -S ./LN -B ./build ${{ matrix.cmake_config_options }} cmake --build ./build ${{ matrix.cmake_build_options }} --target package - - name: Upload LN Assets - uses: ncipollo/release-action@v1.14.0 - with: - allowUpdates: true - generateReleaseNotes: false - prerelease: ${{ contains(github.ref, '-rc') }} - owner: ${{ secrets.LNB_ACTOR }} - repo: LN - token: ${{ secrets.LNB_TOKEN }} - tag: ${{ needs.preamble.outputs.internal_tag }} - artifacts: "./build/hpccsystems-clienttools-internal*.exe,./build/hpccsystems-clienttools-internal*.msi,./build/hpccsystems-clienttools-internal*.dmg,./build/hpccsystems-clienttools-internal*.pkg,./build/hpccsystems-clienttools-internal*.tar.gz" - - name: Upload Assets to Jfrog (windows) if: ${{ contains(matrix.os, 'windows') && github.repository_owner == 'hpcc-systems' }} shell: bash From 52d7d4dc7c35ce248fc52d49d84b209c789e3fab Mon Sep 17 00:00:00 2001 From: Gordon Smith Date: Thu, 11 Jul 2024 11:26:51 +0100 Subject: [PATCH 09/12] HPCC-32225 Update scopes filter on timeline click Only update if its blank or has an existing "scope filter" Signed-off-by: Gordon Smith --- esp/src/src-react/components/Metrics.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/esp/src/src-react/components/Metrics.tsx b/esp/src/src-react/components/Metrics.tsx index ef64b498176..798d7843a79 100644 --- a/esp/src/src-react/components/Metrics.tsx +++ b/esp/src/src-react/components/Metrics.tsx @@ -274,9 +274,12 @@ export const Metrics: React.FunctionComponent = ({ }, [scopesSelectionChanged, scopesTable]); React.useEffect(() => { + if (!scopeFilter || scopeFilter.indexOf("name:") === 0) { + setScopeFilter(timelineFilter ? `name:${timelineFilter}` : ""); + } scopesTable .metrics(metrics, options, timelineFilter, scopeFilter, matchCase) - .render() + .lazyRender() ; }, [matchCase, metrics, options, scopeFilter, scopesTable, timelineFilter]); From 32f69e4d2bd80997a1569a8d08ce312473ae8b2d Mon Sep 17 00:00:00 2001 From: Jeremy Clements <79224539+jeclrsg@users.noreply.github.com> Date: Fri, 5 Jul 2024 14:59:38 -0400 Subject: [PATCH 10/12] HPCC-32211 ECL Watch v9 fix password expiry check change ECL Watch v9's password expiry check to work the same as v5, relying only on the value of passwordDaysRemaining from ESP Signed-off-by: Jeremy Clements <79224539+jeclrsg@users.noreply.github.com> --- esp/src/eclwatch/HPCCPlatformWidget.js | 4 +-- esp/src/src-react/components/Title.tsx | 39 ++++++++++++++++++-------- esp/src/src-react/hooks/confirm.tsx | 2 +- 3 files changed, 31 insertions(+), 14 deletions(-) diff --git a/esp/src/eclwatch/HPCCPlatformWidget.js b/esp/src/eclwatch/HPCCPlatformWidget.js index 4424fe0c4ef..1701a07c39c 100644 --- a/esp/src/eclwatch/HPCCPlatformWidget.js +++ b/esp/src/eclwatch/HPCCPlatformWidget.js @@ -258,11 +258,11 @@ define([ switch (response.MyAccountResponse.passwordDaysRemaining) { case null: break; - case -1: + case -1: // password has expired alert(context.i18n.PasswordExpired); context._onUserID(); break; - case -2: + case -2: // password never expires break; default: if (response.MyAccountResponse.passwordDaysRemaining && response.MyAccountResponse.passwordDaysRemaining <= response.MyAccountResponse.passwordExpirationWarningDays) { diff --git a/esp/src/src-react/components/Title.tsx b/esp/src/src-react/components/Title.tsx index a2daa39e66e..f42b2e6ad77 100644 --- a/esp/src/src-react/components/Title.tsx +++ b/esp/src/src-react/components/Title.tsx @@ -10,12 +10,12 @@ import nlsHPCC from "src/nlsHPCC"; import * as Utility from "src/Utility"; import { useBanner } from "../hooks/banner"; +import { useConfirm } from "../hooks/confirm"; +import { replaceUrl } from "../util/history"; import { useECLWatchLogger } from "../hooks/logging"; -import { useBuildInfo, useModernMode } from "../hooks/platform"; +import { useBuildInfo, useModernMode, useCheckFeatures } from "../hooks/platform"; import { useGlobalStore } from "../hooks/store"; import { useMyAccount, useUserSession } from "../hooks/user"; -import { replaceUrl } from "../util/history"; -import { useCheckFeatures } from "../hooks/platform"; import { TitlebarConfig } from "./forms/TitlebarConfig"; import { switchTechPreview } from "./controls/ComingSoon"; @@ -65,6 +65,15 @@ export const DevTitle: React.FunctionComponent = ({ const [showBannerConfig, setShowBannerConfig] = React.useState(false); const [BannerMessageBar, BannerConfig] = useBanner({ showForm: showBannerConfig, setShowForm: setShowBannerConfig }); + const [PasswordExpiredConfirm, setPasswordExpiredConfirm] = useConfirm({ + title: nlsHPCC.PasswordExpiration, + message: nlsHPCC.PasswordExpired, + cancelLabel: null, + onSubmit: React.useCallback(() => { + setShowMyAccount(true); + }, []) + }); + const titlebarColorSet = React.useMemo(() => { return titlebarColor && titlebarColor !== theme.palette.themeLight; }, [theme.palette, titlebarColor]); @@ -236,16 +245,23 @@ export const DevTitle: React.FunctionComponent = ({ if (!cookie("PasswordExpiredCheck")) { // cookie expires option expects whole number of days, use a decimal < 1 for hours cookie("PasswordExpiredCheck", "true", { expires: 0.5, path: "/" }); - if (currentUser.passwordIsExpired) { - alert(nlsHPCC.PasswordExpired); - setShowMyAccount(true); - } else if (currentUser.passwordDaysRemaining && currentUser.passwordDaysRemaining <= currentUser.passwordExpirationWarningDays) { - if (confirm(nlsHPCC.PasswordExpirePrefix + currentUser.passwordDaysRemaining + nlsHPCC.PasswordExpirePostfix)) { - setShowMyAccount(true); - } + switch (currentUser.passwordDaysRemaining) { + case -1: // password has expired + setPasswordExpiredConfirm(true); + break; + case -2: // password never expires + case null: + break; + default: + if (currentUser?.passwordDaysRemaining <= currentUser?.passwordExpirationWarningDays) { + if (confirm(nlsHPCC.PasswordExpirePrefix + currentUser.passwordDaysRemaining + nlsHPCC.PasswordExpirePostfix)) { + setShowMyAccount(true); + } + } + break; } } - }, [currentUser]); + }, [currentUser, setPasswordExpiredConfirm]); return
@@ -296,6 +312,7 @@ export const DevTitle: React.FunctionComponent = ({ setShowMyAccount(false)}> +
; }; diff --git a/esp/src/src-react/hooks/confirm.tsx b/esp/src/src-react/hooks/confirm.tsx index d0eed3617d1..5c2e3615327 100644 --- a/esp/src/src-react/hooks/confirm.tsx +++ b/esp/src/src-react/hooks/confirm.tsx @@ -39,7 +39,7 @@ export function useConfirm({ title, message, items = [], onSubmit, submitLabel = setShow(false); }} /> - setShow(false)} /> + {cancelLabel && setShow(false)} />} ; }, [cancelLabel, items, message, onSubmit, show, submitLabel, title]); From b393c328675664be7c533e449021275a914114a2 Mon Sep 17 00:00:00 2001 From: Jake Smith Date: Thu, 11 Jul 2024 13:51:05 +0100 Subject: [PATCH 11/12] HPCC-32146 Fix logic waiting for workunit complete to spot hard fail The workunit k8s launch code, waits on the state of the workunit after it's lauched. Once it responds, which includes if it disappears and the queuing agent (thoragent) marks it as fails, it scans the workuinit for exceptions and throws one if it exists. However, if there were some exceptions, but no 'thormasterexception' reply exception, then the logic skipped the follow on test to see if the workunit had been marked failed, and continued. This results in either jobs appearing to run indefinitely, or spuriously marking themselves as complete NB: reproduced by deleting the thormanager pod abruptly (--force=true) There also some changes her which wrap the deleteResource commands in case they throw exception, because we do not want those exceptions to cause job failures in themselves, or mask the original exception. Log as operator warnings instead. Signed-off-by: Jake Smith --- common/workunit/workunit.cpp | 6 +----- system/jlib/jcontainerized.cpp | 26 ++++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/common/workunit/workunit.cpp b/common/workunit/workunit.cpp index 70a98ae5256..24f1b66db2a 100644 --- a/common/workunit/workunit.cpp +++ b/common/workunit/workunit.cpp @@ -14426,16 +14426,12 @@ void executeThorGraph(const char * graphName, IConstWorkUnit &workunit, const IP } } } - else + { Owned w = &workunit.lock(); WUState state = w->getState(); if (WUStateFailed == state) throw makeStringException(0, "Workunit failed"); - } - - { - Owned w = &workunit.lock(); w->setState(WUStateRunning); } #else diff --git a/system/jlib/jcontainerized.cpp b/system/jlib/jcontainerized.cpp index 02f488b4671..3acf4b85abb 100644 --- a/system/jlib/jcontainerized.cpp +++ b/system/jlib/jcontainerized.cpp @@ -184,7 +184,18 @@ void waitJob(const char *componentName, const char *resourceType, const char *jo { // Delete jobs unless the pod failed and keepJob==podfailures if ((nullptr == exception) || (KeepJobs::podfailures != keepJob) || schedulingTimeout) - deleteResource(componentName, "job", job); + { + try + { + deleteResource(componentName, "job", job); + } + catch(IException *e) + { + // we do not want this error to propagate to the workunit and cause it to fail, and mask other errors + OWARNLOG(e, "Failed to delete job"); + e->Release(); + } + } } if (exception) throw exception.getClear(); @@ -255,7 +266,18 @@ void runJob(const char *componentName, const char *wuid, const char *jobName, co exception.setown(e); } if (removeNetwork) - deleteResource(componentName, "networkpolicy", jobName); + { + try + { + deleteResource(componentName, "networkpolicy", jobName); + } + catch(IException *e) + { + // we do not want this error to propagate to the workunit and cause it to fail, and mask other errors + OWARNLOG(e, "Failed to delete networkpolicy"); + e->Release(); + } + } if (exception) throw exception.getClear(); } From 1796d66efb0e783234198cd14c0b5814e5229208 Mon Sep 17 00:00:00 2001 From: Ken Rowland Date: Tue, 2 Jul 2024 18:59:28 -0400 Subject: [PATCH 12/12] HPCC-32198 Dali disable default file user option needs support in config files Added support to ensure option is valid and copied to environment Signed-Off-By: Kenneth Rowland kenneth.rowland@lexisnexisrisk.com --- helm/hpcc/values.schema.json | 4 ++++ initfiles/componentfiles/configxml/dali.xsl | 3 +++ 2 files changed, 7 insertions(+) diff --git a/helm/hpcc/values.schema.json b/helm/hpcc/values.schema.json index 2d1f2694d8e..38754492fcf 100644 --- a/helm/hpcc/values.schema.json +++ b/helm/hpcc/values.schema.json @@ -1087,6 +1087,10 @@ "type": "boolean", "description": "Only return iterated logical file metadata for files that user has scope permission to access" }, + "disableDefaultUser": { + "type": "boolean", + "description": "Disable deprecated files default user" + }, "useLegacyDefaultFileScopePermissionCache": { "type": "boolean", "description": "Use legacy default filescope permissions that cached value for first user" diff --git a/initfiles/componentfiles/configxml/dali.xsl b/initfiles/componentfiles/configxml/dali.xsl index a8fa70c2aab..da7aec45291 100644 --- a/initfiles/componentfiles/configxml/dali.xsl +++ b/initfiles/componentfiles/configxml/dali.xsl @@ -311,6 +311,9 @@ + + +