@perses-dev/table-plugin 0.13.0-rc.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -39,7 +39,10 @@ function buildRawTableData(queryResults, spec, options = {}) {
39
39
  ts,
40
40
  queryIndex
41
41
  }))).map(({ data, ts, queryIndex })=>{
42
- if (ts.values[0] === undefined) {
42
+ // Pick the last (most recent) data point. For range responses the last
43
+ // value covers the window ending at the selected time range's end.
44
+ const lastPoint = ts.values[ts.values.length - 1];
45
+ if (lastPoint === undefined) {
43
46
  return {
44
47
  ...ts.labels
45
48
  };
@@ -54,7 +57,7 @@ function buildRawTableData(queryResults, spec, options = {}) {
54
57
  // For rendering: plugin columns get embedded PanelData objects
55
58
  let columnValue;
56
59
  if (forExport) {
57
- columnValue = ts.values[0][1];
60
+ columnValue = lastPoint[1];
58
61
  } else {
59
62
  const hasPlugin = (spec.columnSettings ?? []).find((x)=>x.name === valueColumnName)?.plugin;
60
63
  columnValue = hasPlugin ? {
@@ -63,17 +66,15 @@ function buildRawTableData(queryResults, spec, options = {}) {
63
66
  ...data.data,
64
67
  series: data.data.series.filter((s)=>s === ts)
65
68
  }
66
- } : ts.values[0][1];
69
+ } : lastPoint[1];
67
70
  }
68
71
  if (queryMode === 'instant') {
69
- // Timestamp is not indexed as it will be the same for all queries
70
72
  return {
71
- timestamp: ts.values[0][0],
73
+ timestamp: lastPoint[0],
72
74
  [valueColumnName]: columnValue,
73
75
  ...labels
74
76
  };
75
77
  } else {
76
- // Don't add a timestamp for range queries
77
78
  return {
78
79
  [valueColumnName]: columnValue,
79
80
  ...labels
@@ -1 +1 @@
1
- {"version":3,"file":"table-data-utils.d.ts","sourceRoot":"","sources":["../../src/table-data-utils.ts"],"names":[],"mappings":"AAaA,OAAO,EAAU,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAc,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAE9E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,EAC9C,IAAI,EAAE,YAAY,EAClB,OAAO,GAAE,wBAA6B,GACrC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA2ChC"}
1
+ {"version":3,"file":"table-data-utils.d.ts","sourceRoot":"","sources":["../../src/table-data-utils.ts"],"names":[],"mappings":"AAaA,OAAO,EAAU,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAc,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAE9E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,EAC9C,IAAI,EAAE,YAAY,EAClB,OAAO,GAAE,wBAA6B,GACrC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA4ChC"}
@@ -35,7 +35,10 @@
35
35
  ts,
36
36
  queryIndex
37
37
  }))).map(({ data, ts, queryIndex })=>{
38
- if (ts.values[0] === undefined) {
38
+ // Pick the last (most recent) data point. For range responses the last
39
+ // value covers the window ending at the selected time range's end.
40
+ const lastPoint = ts.values[ts.values.length - 1];
41
+ if (lastPoint === undefined) {
39
42
  return {
40
43
  ...ts.labels
41
44
  };
@@ -50,7 +53,7 @@
50
53
  // For rendering: plugin columns get embedded PanelData objects
51
54
  let columnValue;
52
55
  if (forExport) {
53
- columnValue = ts.values[0][1];
56
+ columnValue = lastPoint[1];
54
57
  } else {
55
58
  const hasPlugin = (spec.columnSettings ?? []).find((x)=>x.name === valueColumnName)?.plugin;
56
59
  columnValue = hasPlugin ? {
@@ -59,17 +62,15 @@
59
62
  ...data.data,
60
63
  series: data.data.series.filter((s)=>s === ts)
61
64
  }
62
- } : ts.values[0][1];
65
+ } : lastPoint[1];
63
66
  }
64
67
  if (queryMode === 'instant') {
65
- // Timestamp is not indexed as it will be the same for all queries
66
68
  return {
67
- timestamp: ts.values[0][0],
69
+ timestamp: lastPoint[0],
68
70
  [valueColumnName]: columnValue,
69
71
  ...labels
70
72
  };
71
73
  } else {
72
- // Don't add a timestamp for range queries
73
74
  return {
74
75
  [valueColumnName]: columnValue,
75
76
  ...labels
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/table-data-utils.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Labels, PanelData } from '@perses-dev/plugin-system';\nimport { TimeSeries, TimeSeriesData } from '@perses-dev/spec';\nimport { TableOptions } from './models';\n\n/**\n * Options for building raw table data.\n */\nexport interface BuildRawTableDataOptions {\n /**\n * When true, always use raw scalar values for cell data (for export).\n * When false, plugin columns will contain embedded PanelData objects (for rendering).\n */\n forExport?: boolean;\n}\n\n/**\n * Determines the query mode based on table options.\n * If any column has a plugin (embedded panel), use range mode; otherwise instant.\n */\nexport function getTablePanelQueryMode(spec: TableOptions): 'instant' | 'range' {\n return (spec.columnSettings ?? []).some((c) => c.plugin) ? 'range' : 'instant';\n}\n\n/**\n * Converts raw query results into a tabular format.\n *\n * This is the shared data-building logic used by both TablePanel (for rendering)\n * and TableExportAction (for CSV export). Extracting this ensures both use the\n * same transformation logic, reducing drift.\n *\n * @param queryResults - The panel query results containing time series data\n * @param spec - The table options specification\n * @param options - Build options (e.g., forExport mode)\n * @returns Array of row objects with column keys and values\n */\nexport function buildRawTableData(\n queryResults: Array<PanelData<TimeSeriesData>>,\n spec: TableOptions,\n options: BuildRawTableDataOptions = {}\n): Array<Record<string, unknown>> {\n const { forExport = false } = options;\n const queryMode = getTablePanelQueryMode(spec);\n\n return queryResults\n .flatMap((data: PanelData<TimeSeriesData>, queryIndex: number) =>\n (data.data?.series ?? []).map((ts: TimeSeries) => ({ data, ts, queryIndex }))\n )\n .map(({ data, ts, queryIndex }: { data: PanelData<TimeSeriesData>; ts: TimeSeries; queryIndex: number }) => {\n if (ts.values[0] === undefined) {\n return { ...ts.labels };\n }\n\n // If there are multiple queries, add query index to value key and label keys to avoid conflicts\n const valueColumnName = queryResults.length === 1 ? 'value' : `value #${queryIndex + 1}`;\n const labels =\n queryResults.length === 1\n ? ts.labels\n : Object.entries(ts.labels ?? {}).reduce((acc, [key, value]) => {\n if (key) acc[`${key} #${queryIndex + 1}`] = value;\n return acc;\n }, {} as Labels);\n\n // For export: always use raw scalar values\n // For rendering: plugin columns get embedded PanelData objects\n let columnValue: unknown;\n if (forExport) {\n columnValue = ts.values[0][1];\n } else {\n const hasPlugin = (spec.columnSettings ?? []).find((x) => x.name === valueColumnName)?.plugin;\n columnValue = hasPlugin\n ? { ...data, data: { ...data.data, series: data.data.series.filter((s) => s === ts) } }\n : ts.values[0][1];\n }\n\n if (queryMode === 'instant') {\n // Timestamp is not indexed as it will be the same for all queries\n return { timestamp: ts.values[0][0], [valueColumnName]: columnValue, ...labels };\n } else {\n // Don't add a timestamp for range queries\n return { [valueColumnName]: columnValue, ...labels };\n }\n });\n}\n"],"names":["getTablePanelQueryMode","spec","columnSettings","some","c","plugin","buildRawTableData","queryResults","options","forExport","queryMode","flatMap","data","queryIndex","series","map","ts","values","undefined","labels","valueColumnName","length","Object","entries","reduce","acc","key","value","columnValue","hasPlugin","find","x","name","filter","s","timestamp"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAiBjC;;;CAGC,GACD,OAAO,SAASA,uBAAuBC,IAAkB;IACvD,OAAO,AAACA,CAAAA,KAAKC,cAAc,IAAI,EAAE,AAAD,EAAGC,IAAI,CAAC,CAACC,IAAMA,EAAEC,MAAM,IAAI,UAAU;AACvE;AAEA;;;;;;;;;;;CAWC,GACD,OAAO,SAASC,kBACdC,YAA8C,EAC9CN,IAAkB,EAClBO,UAAoC,CAAC,CAAC;IAEtC,MAAM,EAAEC,YAAY,KAAK,EAAE,GAAGD;IAC9B,MAAME,YAAYV,uBAAuBC;IAEzC,OAAOM,aACJI,OAAO,CAAC,CAACC,MAAiCC,aACzC,AAACD,CAAAA,KAAKA,IAAI,EAAEE,UAAU,EAAE,AAAD,EAAGC,GAAG,CAAC,CAACC,KAAoB,CAAA;gBAAEJ;gBAAMI;gBAAIH;YAAW,CAAA,IAE3EE,GAAG,CAAC,CAAC,EAAEH,IAAI,EAAEI,EAAE,EAAEH,UAAU,EAA2E;QACrG,IAAIG,GAAGC,MAAM,CAAC,EAAE,KAAKC,WAAW;YAC9B,OAAO;gBAAE,GAAGF,GAAGG,MAAM;YAAC;QACxB;QAEA,gGAAgG;QAChG,MAAMC,kBAAkBb,aAAac,MAAM,KAAK,IAAI,UAAU,CAAC,OAAO,EAAER,aAAa,GAAG;QACxF,MAAMM,SACJZ,aAAac,MAAM,KAAK,IACpBL,GAAGG,MAAM,GACTG,OAAOC,OAAO,CAACP,GAAGG,MAAM,IAAI,CAAC,GAAGK,MAAM,CAAC,CAACC,KAAK,CAACC,KAAKC,MAAM;YACvD,IAAID,KAAKD,GAAG,CAAC,GAAGC,IAAI,EAAE,EAAEb,aAAa,GAAG,CAAC,GAAGc;YAC5C,OAAOF;QACT,GAAG,CAAC;QAEV,2CAA2C;QAC3C,+DAA+D;QAC/D,IAAIG;QACJ,IAAInB,WAAW;YACbmB,cAAcZ,GAAGC,MAAM,CAAC,EAAE,CAAC,EAAE;QAC/B,OAAO;YACL,MAAMY,YAAY,AAAC5B,CAAAA,KAAKC,cAAc,IAAI,EAAE,AAAD,EAAG4B,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKZ,kBAAkBf;YACvFuB,cAAcC,YACV;gBAAE,GAAGjB,IAAI;gBAAEA,MAAM;oBAAE,GAAGA,KAAKA,IAAI;oBAAEE,QAAQF,KAAKA,IAAI,CAACE,MAAM,CAACmB,MAAM,CAAC,CAACC,IAAMA,MAAMlB;gBAAI;YAAE,IACpFA,GAAGC,MAAM,CAAC,EAAE,CAAC,EAAE;QACrB;QAEA,IAAIP,cAAc,WAAW;YAC3B,kEAAkE;YAClE,OAAO;gBAAEyB,WAAWnB,GAAGC,MAAM,CAAC,EAAE,CAAC,EAAE;gBAAE,CAACG,gBAAgB,EAAEQ;gBAAa,GAAGT,MAAM;YAAC;QACjF,OAAO;YACL,0CAA0C;YAC1C,OAAO;gBAAE,CAACC,gBAAgB,EAAEQ;gBAAa,GAAGT,MAAM;YAAC;QACrD;IACF;AACJ"}
1
+ {"version":3,"sources":["../../src/table-data-utils.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Labels, PanelData } from '@perses-dev/plugin-system';\nimport { TimeSeries, TimeSeriesData } from '@perses-dev/spec';\nimport { TableOptions } from './models';\n\n/**\n * Options for building raw table data.\n */\nexport interface BuildRawTableDataOptions {\n /**\n * When true, always use raw scalar values for cell data (for export).\n * When false, plugin columns will contain embedded PanelData objects (for rendering).\n */\n forExport?: boolean;\n}\n\n/**\n * Determines the query mode based on table options.\n * If any column has a plugin (embedded panel), use range mode; otherwise instant.\n */\nexport function getTablePanelQueryMode(spec: TableOptions): 'instant' | 'range' {\n return (spec.columnSettings ?? []).some((c) => c.plugin) ? 'range' : 'instant';\n}\n\n/**\n * Converts raw query results into a tabular format.\n *\n * This is the shared data-building logic used by both TablePanel (for rendering)\n * and TableExportAction (for CSV export). Extracting this ensures both use the\n * same transformation logic, reducing drift.\n *\n * @param queryResults - The panel query results containing time series data\n * @param spec - The table options specification\n * @param options - Build options (e.g., forExport mode)\n * @returns Array of row objects with column keys and values\n */\nexport function buildRawTableData(\n queryResults: Array<PanelData<TimeSeriesData>>,\n spec: TableOptions,\n options: BuildRawTableDataOptions = {}\n): Array<Record<string, unknown>> {\n const { forExport = false } = options;\n const queryMode = getTablePanelQueryMode(spec);\n\n return queryResults\n .flatMap((data: PanelData<TimeSeriesData>, queryIndex: number) =>\n (data.data?.series ?? []).map((ts: TimeSeries) => ({ data, ts, queryIndex }))\n )\n .map(({ data, ts, queryIndex }: { data: PanelData<TimeSeriesData>; ts: TimeSeries; queryIndex: number }) => {\n // Pick the last (most recent) data point. For range responses the last\n // value covers the window ending at the selected time range's end.\n const lastPoint = ts.values[ts.values.length - 1];\n if (lastPoint === undefined) {\n return { ...ts.labels };\n }\n\n // If there are multiple queries, add query index to value key and label keys to avoid conflicts\n const valueColumnName = queryResults.length === 1 ? 'value' : `value #${queryIndex + 1}`;\n const labels =\n queryResults.length === 1\n ? ts.labels\n : Object.entries(ts.labels ?? {}).reduce((acc, [key, value]) => {\n if (key) acc[`${key} #${queryIndex + 1}`] = value;\n return acc;\n }, {} as Labels);\n\n // For export: always use raw scalar values\n // For rendering: plugin columns get embedded PanelData objects\n let columnValue: unknown;\n if (forExport) {\n columnValue = lastPoint[1];\n } else {\n const hasPlugin = (spec.columnSettings ?? []).find((x) => x.name === valueColumnName)?.plugin;\n columnValue = hasPlugin\n ? { ...data, data: { ...data.data, series: data.data.series.filter((s) => s === ts) } }\n : lastPoint[1];\n }\n\n if (queryMode === 'instant') {\n return { timestamp: lastPoint[0], [valueColumnName]: columnValue, ...labels };\n } else {\n return { [valueColumnName]: columnValue, ...labels };\n }\n });\n}\n"],"names":["getTablePanelQueryMode","spec","columnSettings","some","c","plugin","buildRawTableData","queryResults","options","forExport","queryMode","flatMap","data","queryIndex","series","map","ts","lastPoint","values","length","undefined","labels","valueColumnName","Object","entries","reduce","acc","key","value","columnValue","hasPlugin","find","x","name","filter","s","timestamp"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAiBjC;;;CAGC,GACD,OAAO,SAASA,uBAAuBC,IAAkB;IACvD,OAAO,AAACA,CAAAA,KAAKC,cAAc,IAAI,EAAE,AAAD,EAAGC,IAAI,CAAC,CAACC,IAAMA,EAAEC,MAAM,IAAI,UAAU;AACvE;AAEA;;;;;;;;;;;CAWC,GACD,OAAO,SAASC,kBACdC,YAA8C,EAC9CN,IAAkB,EAClBO,UAAoC,CAAC,CAAC;IAEtC,MAAM,EAAEC,YAAY,KAAK,EAAE,GAAGD;IAC9B,MAAME,YAAYV,uBAAuBC;IAEzC,OAAOM,aACJI,OAAO,CAAC,CAACC,MAAiCC,aACzC,AAACD,CAAAA,KAAKA,IAAI,EAAEE,UAAU,EAAE,AAAD,EAAGC,GAAG,CAAC,CAACC,KAAoB,CAAA;gBAAEJ;gBAAMI;gBAAIH;YAAW,CAAA,IAE3EE,GAAG,CAAC,CAAC,EAAEH,IAAI,EAAEI,EAAE,EAAEH,UAAU,EAA2E;QACrG,uEAAuE;QACvE,mEAAmE;QACnE,MAAMI,YAAYD,GAAGE,MAAM,CAACF,GAAGE,MAAM,CAACC,MAAM,GAAG,EAAE;QACjD,IAAIF,cAAcG,WAAW;YAC3B,OAAO;gBAAE,GAAGJ,GAAGK,MAAM;YAAC;QACxB;QAEA,gGAAgG;QAChG,MAAMC,kBAAkBf,aAAaY,MAAM,KAAK,IAAI,UAAU,CAAC,OAAO,EAAEN,aAAa,GAAG;QACxF,MAAMQ,SACJd,aAAaY,MAAM,KAAK,IACpBH,GAAGK,MAAM,GACTE,OAAOC,OAAO,CAACR,GAAGK,MAAM,IAAI,CAAC,GAAGI,MAAM,CAAC,CAACC,KAAK,CAACC,KAAKC,MAAM;YACvD,IAAID,KAAKD,GAAG,CAAC,GAAGC,IAAI,EAAE,EAAEd,aAAa,GAAG,CAAC,GAAGe;YAC5C,OAAOF;QACT,GAAG,CAAC;QAEV,2CAA2C;QAC3C,+DAA+D;QAC/D,IAAIG;QACJ,IAAIpB,WAAW;YACboB,cAAcZ,SAAS,CAAC,EAAE;QAC5B,OAAO;YACL,MAAMa,YAAY,AAAC7B,CAAAA,KAAKC,cAAc,IAAI,EAAE,AAAD,EAAG6B,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKX,kBAAkBjB;YACvFwB,cAAcC,YACV;gBAAE,GAAGlB,IAAI;gBAAEA,MAAM;oBAAE,GAAGA,KAAKA,IAAI;oBAAEE,QAAQF,KAAKA,IAAI,CAACE,MAAM,CAACoB,MAAM,CAAC,CAACC,IAAMA,MAAMnB;gBAAI;YAAE,IACpFC,SAAS,CAAC,EAAE;QAClB;QAEA,IAAIP,cAAc,WAAW;YAC3B,OAAO;gBAAE0B,WAAWnB,SAAS,CAAC,EAAE;gBAAE,CAACK,gBAAgB,EAAEO;gBAAa,GAAGR,MAAM;YAAC;QAC9E,OAAO;YACL,OAAO;gBAAE,CAACC,gBAAgB,EAAEO;gBAAa,GAAGR,MAAM;YAAC;QACrD;IACF;AACJ"}
package/mf-manifest.json CHANGED
@@ -5,11 +5,11 @@
5
5
  "name": "Table",
6
6
  "type": "app",
7
7
  "buildInfo": {
8
- "buildVersion": "0.13.0-rc.0",
8
+ "buildVersion": "0.13.0",
9
9
  "buildName": "@perses-dev/table-plugin"
10
10
  },
11
11
  "remoteEntry": {
12
- "name": "__mf/js/Table.4ebbd4e8.js",
12
+ "name": "__mf/js/Table.73b9cec1.js",
13
13
  "path": "",
14
14
  "type": "global"
15
15
  },
@@ -89,14 +89,14 @@
89
89
  {
90
90
  "id": "Table:@perses-dev/components",
91
91
  "name": "@perses-dev/components",
92
- "version": "0.54.0-rc.0",
92
+ "version": "0.54.0",
93
93
  "singleton": true,
94
- "requiredVersion": "^0.54.0-rc.0",
94
+ "requiredVersion": "^0.54.0",
95
95
  "assets": {
96
96
  "js": {
97
97
  "async": [],
98
98
  "sync": [
99
- "__mf/js/async/4014.222654cd.js"
99
+ "__mf/js/async/4014.cf88a118.js"
100
100
  ]
101
101
  },
102
102
  "css": {
@@ -111,14 +111,14 @@
111
111
  {
112
112
  "id": "Table:@perses-dev/dashboards",
113
113
  "name": "@perses-dev/dashboards",
114
- "version": "0.54.0-rc.0",
114
+ "version": "0.54.0",
115
115
  "singleton": true,
116
- "requiredVersion": "^0.54.0-rc.0",
116
+ "requiredVersion": "^0.54.0",
117
117
  "assets": {
118
118
  "js": {
119
119
  "async": [],
120
120
  "sync": [
121
- "__mf/js/async/7984.e70e214c.js"
121
+ "__mf/js/async/7984.a8edc213.js"
122
122
  ]
123
123
  },
124
124
  "css": {
@@ -131,14 +131,14 @@
131
131
  {
132
132
  "id": "Table:@perses-dev/plugin-system",
133
133
  "name": "@perses-dev/plugin-system",
134
- "version": "0.54.0-rc.0",
134
+ "version": "0.54.0",
135
135
  "singleton": true,
136
- "requiredVersion": "^0.54.0-rc.0",
136
+ "requiredVersion": "^0.54.0",
137
137
  "assets": {
138
138
  "js": {
139
139
  "async": [],
140
140
  "sync": [
141
- "__mf/js/async/9741.4e81fe95.js"
141
+ "__mf/js/async/3981.52e94742.js"
142
142
  ]
143
143
  },
144
144
  "css": {
@@ -151,14 +151,14 @@
151
151
  {
152
152
  "id": "Table:@perses-dev/spec",
153
153
  "name": "@perses-dev/spec",
154
- "version": "0.2.0-beta.9",
154
+ "version": "0.2.0",
155
155
  "singleton": true,
156
- "requiredVersion": "^0.2.0-beta.9",
156
+ "requiredVersion": "^0.2.0",
157
157
  "assets": {
158
158
  "js": {
159
159
  "async": [],
160
160
  "sync": [
161
- "__mf/js/async/2842.cd8ee26c.js"
161
+ "__mf/js/async/2842.a52597e6.js"
162
162
  ]
163
163
  },
164
164
  "css": {
@@ -340,7 +340,7 @@
340
340
  "__mf/js/async/9051.c4deebd7.js",
341
341
  "__mf/js/async/868.507e984c.js",
342
342
  "__mf/js/async/5021.c663603d.js",
343
- "__mf/js/async/__federation_expose_Table.643cb8e7.js"
343
+ "__mf/js/async/__federation_expose_Table.5d0cfb46.js"
344
344
  ],
345
345
  "async": [
346
346
  "__mf/js/async/lib-router.3493bbf9.js",
package/mf-stats.json CHANGED
@@ -5,11 +5,11 @@
5
5
  "name": "Table",
6
6
  "type": "app",
7
7
  "buildInfo": {
8
- "buildVersion": "0.13.0-rc.0",
8
+ "buildVersion": "0.13.0",
9
9
  "buildName": "@perses-dev/table-plugin"
10
10
  },
11
11
  "remoteEntry": {
12
- "name": "__mf/js/Table.4ebbd4e8.js",
12
+ "name": "__mf/js/Table.73b9cec1.js",
13
13
  "path": "",
14
14
  "type": "global"
15
15
  },
@@ -100,17 +100,17 @@
100
100
  },
101
101
  {
102
102
  "singleton": true,
103
- "requiredVersion": "^0.54.0-rc.0",
103
+ "requiredVersion": "^0.54.0",
104
104
  "shareScope": "default",
105
105
  "name": "@perses-dev/components",
106
- "version": "0.54.0-rc.0",
106
+ "version": "0.54.0",
107
107
  "eager": false,
108
108
  "id": "Table:@perses-dev/components",
109
109
  "assets": {
110
110
  "js": {
111
111
  "async": [],
112
112
  "sync": [
113
- "__mf/js/async/4014.222654cd.js"
113
+ "__mf/js/async/4014.cf88a118.js"
114
114
  ]
115
115
  },
116
116
  "css": {
@@ -128,17 +128,17 @@
128
128
  },
129
129
  {
130
130
  "singleton": true,
131
- "requiredVersion": "^0.54.0-rc.0",
131
+ "requiredVersion": "^0.54.0",
132
132
  "shareScope": "default",
133
133
  "name": "@perses-dev/dashboards",
134
- "version": "0.54.0-rc.0",
134
+ "version": "0.54.0",
135
135
  "eager": false,
136
136
  "id": "Table:@perses-dev/dashboards",
137
137
  "assets": {
138
138
  "js": {
139
139
  "async": [],
140
140
  "sync": [
141
- "__mf/js/async/7984.e70e214c.js"
141
+ "__mf/js/async/7984.a8edc213.js"
142
142
  ]
143
143
  },
144
144
  "css": {
@@ -154,17 +154,17 @@
154
154
  },
155
155
  {
156
156
  "singleton": true,
157
- "requiredVersion": "^0.54.0-rc.0",
157
+ "requiredVersion": "^0.54.0",
158
158
  "shareScope": "default",
159
159
  "name": "@perses-dev/plugin-system",
160
- "version": "0.54.0-rc.0",
160
+ "version": "0.54.0",
161
161
  "eager": false,
162
162
  "id": "Table:@perses-dev/plugin-system",
163
163
  "assets": {
164
164
  "js": {
165
165
  "async": [],
166
166
  "sync": [
167
- "__mf/js/async/9741.4e81fe95.js"
167
+ "__mf/js/async/3981.52e94742.js"
168
168
  ]
169
169
  },
170
170
  "css": {
@@ -180,17 +180,17 @@
180
180
  },
181
181
  {
182
182
  "singleton": true,
183
- "requiredVersion": "^0.2.0-beta.9",
183
+ "requiredVersion": "^0.2.0",
184
184
  "shareScope": "default",
185
185
  "name": "@perses-dev/spec",
186
- "version": "0.2.0-beta.9",
186
+ "version": "0.2.0",
187
187
  "eager": false,
188
188
  "id": "Table:@perses-dev/spec",
189
189
  "assets": {
190
190
  "js": {
191
191
  "async": [],
192
192
  "sync": [
193
- "__mf/js/async/2842.cd8ee26c.js"
193
+ "__mf/js/async/2842.a52597e6.js"
194
194
  ]
195
195
  },
196
196
  "css": {
@@ -416,7 +416,7 @@
416
416
  "__mf/js/async/9051.c4deebd7.js",
417
417
  "__mf/js/async/868.507e984c.js",
418
418
  "__mf/js/async/5021.c663603d.js",
419
- "__mf/js/async/__federation_expose_Table.643cb8e7.js"
419
+ "__mf/js/async/__federation_expose_Table.5d0cfb46.js"
420
420
  ],
421
421
  "async": [
422
422
  "__mf/js/async/lib-router.3493bbf9.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@perses-dev/table-plugin",
3
- "version": "0.13.0-rc.0",
3
+ "version": "0.13.0",
4
4
  "license": "Apache-2.0",
5
5
  "homepage": "https://github.com/perses/plugins/blob/main/README.md",
6
6
  "repository": {
@@ -28,10 +28,10 @@
28
28
  "@emotion/react": "^11.7.1",
29
29
  "@emotion/styled": "^11.6.0",
30
30
  "@hookform/resolvers": "^3.2.0",
31
- "@perses-dev/components": "^0.54.0-rc.0",
32
- "@perses-dev/spec": "^0.2.0-beta.9",
33
- "@perses-dev/plugin-system": "^0.54.0-rc.0",
34
- "@perses-dev/dashboards": "^0.54.0-rc.0",
31
+ "@perses-dev/components": "^0.54.0",
32
+ "@perses-dev/spec": "^0.2.0",
33
+ "@perses-dev/plugin-system": "^0.54.0",
34
+ "@perses-dev/dashboards": "^0.54.0",
35
35
  "@tanstack/react-table": "^8.20.5",
36
36
  "date-fns": "^4.1.0",
37
37
  "date-fns-tz": "^3.2.0",
@@ -1 +0,0 @@
1
- "use strict";(self.chunk_Table=self.chunk_Table||[]).push([["2842"],{40625(e,a,n){n.r(a),n.d(a,{ONE_WEEK_IN_MS:()=>u,querySpecSchema:()=>C,annotationDisplaySchema:()=>R,buildPanelSpecSchema:()=>K,resolvePanelRef:()=>Y,variableDefinitionSchema:()=>es,variableTextSchema:()=>en,isTimeSeriesValueTuple:()=>j,otlpresourcev1:()=>i,parseDurationString:()=>c,isValidQueryPluginType:()=>_,ONE_YEAR_IN_MS:()=>p,DURATION_REGEX:()=>d,createPanelRef:()=>v,getSuggestedStepMs:()=>x,otlpcommonv1:()=>t,variableListSpecSchema:()=>X,variableDisplaySchema:()=>W,DEFAULT_ALL_VALUE:()=>"$__all",ONE_HOUR_IN_MS:()=>o,getPanelKeyFromRef:()=>g,ONE_MINUTE_IN_MS:()=>6e4,intervalToDuration:()=>M,convertTimeToDuration:()=>h,isDurationString:()=>m,panelSpecSchema:()=>q,buildVariableDefinitionSchema:()=>el,otlptracev1:()=>s,annotationSpecSchema:()=>$,buildDatasourceSpecSchema:()=>L,panelDisplaySpec:()=>U,panelDefinitionSchema:()=>F,buildVariableListSchema:()=>ee,datasourceSpecSchema:()=>z,buildVariableSpecSchema:()=>ei,isAbsoluteTimeRange:()=>f,ONE_SECOND_IN_MS:()=>1e3,displaySchema:()=>w,panelEditorSchema:()=>G,variableListSchema:()=>Z,isValidTraceId:()=>T,roundStepInterval:()=>b,variableTextSpecSchema:()=>ea,durationValidationSchema:()=>P,toAbsoluteTimeRange:()=>k,buildVariableListSpecSchema:()=>J,buildAnnotationSpecSchema:()=>N,buildPanelDefinitionSchema:()=>B,isRelativeTimeRange:()=>y,linkSchema:()=>Q,variableSpecSchema:()=>et,formatDuration:()=>S,buildPanelEditorSchema:()=>H,ONE_DAY_IN_MS:()=>r,pluginSchema:()=>A});var t={};n.r(t);var i={};n.r(i);var s={};n.r(s),n.d(s,{StatusCodeError:()=>O,StatusCodeOk:()=>E,StatusCodeUnset:()=>D});var l=n(94461);let o=36e5,r=864e5,u=6048e5,p=31536e6,d=/^(?:(\d+)y)?(?:(\d+)w)?(?:(\d+)d)?(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?(?:(\d+)ms)?$/;function c(e){let a=d.exec(e);if(null===a)throw Error(`Invalid duration string '${e}'`);return{years:parseInt(a[1]??"0"),months:0,weeks:parseInt(a[2]??"0"),days:parseInt(a[3]??"0"),hours:parseInt(a[4]??"0"),minutes:parseInt(a[5]??"0"),seconds:parseInt(a[6]??"0")+parseInt(a[7]??"0")/1e3}}function m(e){return""!==e&&d.test(e)}function S(e){let a=[];if(e.years&&a.push(`${e.years}y`),e.weeks&&a.push(`${e.weeks}w`),e.days&&a.push(`${e.days}d`),e.hours&&a.push(`${e.hours}h`),e.minutes&&a.push(`${e.minutes}m`),e.seconds){let n=Math.trunc(e.seconds);n&&a.push(`${n}s`);let t=Math.round((e.seconds-n)*1e3);t&&a.push(`${t}ms`)}return a.join("")}function M(e){return h(e.end.valueOf()-e.start.valueOf())}function h(e){let a=Math.trunc(e/p);a>0&&(e-=a*p);let n=Math.trunc(e/u);n>0&&(e-=n*u);let t=Math.trunc(e/r);t>0&&(e-=t*r);let i=Math.trunc(e/o);i>0&&(e-=i*o);let s=Math.trunc(e/6e4);return s>0&&(e-=6e4*s),{years:a,months:0,weeks:n,days:t,hours:i,minutes:s,seconds:e/1e3}}function y(e){return void 0!==e.pastDuration}function f(e){return void 0!==e.start&&void 0!==e.end}function k(e){let a=e.end??new Date;return{start:(0,l.sub)(a,c(e.pastDuration)),end:a}}let I=[{maxMs:15,roundedStepMs:10,display:"0.01s"},{maxMs:35,roundedStepMs:20,display:"0.02s"},{maxMs:75,roundedStepMs:50,display:"0.05s"},{maxMs:150,roundedStepMs:100,display:"0.1s"},{maxMs:350,roundedStepMs:200,display:"0.2s"},{maxMs:750,roundedStepMs:500,display:"0.5s"},{maxMs:1500,roundedStepMs:1e3,display:"1s"},{maxMs:3500,roundedStepMs:2e3,display:"2s"},{maxMs:7500,roundedStepMs:5e3,display:"5s"},{maxMs:12500,roundedStepMs:1e4,display:"10s"},{maxMs:17500,roundedStepMs:15e3,display:"15s"},{maxMs:25e3,roundedStepMs:2e4,display:"20s"},{maxMs:45e3,roundedStepMs:3e4,display:"30s"},{maxMs:9e4,roundedStepMs:6e4,display:"1m"},{maxMs:21e4,roundedStepMs:12e4,display:"2m"},{maxMs:45e4,roundedStepMs:3e5,display:"5m"},{maxMs:75e4,roundedStepMs:6e5,display:"10m"},{maxMs:75e4,roundedStepMs:9e5,display:"15m"},{maxMs:15e5,roundedStepMs:12e5,display:"20m"},{maxMs:27e5,roundedStepMs:18e5,display:"30m"},{maxMs:54e5,roundedStepMs:36e5,display:"1h"},{maxMs:9e6,roundedStepMs:72e5,display:"2h"},{maxMs:162e5,roundedStepMs:108e5,display:"3h"},{maxMs:324e5,roundedStepMs:216e5,display:"6h"},{maxMs:864e5,roundedStepMs:432e5,display:"12h"},{maxMs:6048e5,roundedStepMs:864e5,display:"1d"},{maxMs:18144e5,roundedStepMs:6048e5,display:"1w"},{maxMs:36288e5,roundedStepMs:2592e6,display:"30d"},{maxMs:63072e6,roundedStepMs:31536e6,display:"1y"}];function b(e){for(let{maxMs:a,roundedStepMs:n}of I)if(e<a)return n;return 15e3}function x(e,a){return b(Math.floor((e.end.valueOf()-e.start.valueOf())/a))}function Y(e,a){let n=g(a),t=e.panels[n];if(void 0===t)throw Error(`Could not resolve panels reference ${a.$ref}`);return t}function g(e){return e.$ref.substring(14)}function v(e){return{$ref:`#/spec/panels/${e}`}}function _(e){return["TimeSeriesQuery","TraceQuery","ProfileQuery","LogQuery","AlertsQuery","SilencesQuery"].includes(e)}function j(e){return 2===e.length}function T(e){return/^[0-9a-fA-F]+$/.test(e)}let D="STATUS_CODE_UNSET",E="STATUS_CODE_OK",O="STATUS_CODE_ERROR";var V=n(59140);let A=V.Ik({kind:V.Yj().min(1,"Required"),spec:V.g1(V.Yj(),V.bz())}),R=V.Ik({name:V.Yj(),description:V.Yj().optional(),hidden:V.zM().optional(),color:V.Yj().optional()});function N(e){return V.Ik({display:R,plugin:e})}let $=V.Ik({display:R,plugin:A}),w=V.Ik({name:V.Yj().optional(),description:V.Yj().optional()}),z=V.Ik({display:w.optional(),default:V.zM(),plugin:A});function L(e){return V.Ik({display:w.optional(),default:V.zM(),plugin:e})}let P=V.Yj().min(1,"Required").regex(d,"Must be a valid duration string"),U=V.Ik({name:V.Yj().optional(),description:V.Yj().optional()}),C=V.Ik({kind:V.Yj().min(1),spec:V.Ik({name:V.Yj().optional(),plugin:A})}),Q=V.Ik({name:V.Yj().optional(),url:V.Yj().min(1),tooltip:V.Yj().optional(),renderVariables:V.zM().optional(),targetBlank:V.zM().optional()}),q=V.Ik({display:U.optional(),plugin:A,queries:V.YO(C).optional(),links:V.YO(Q).optional()});function K(e){return V.Ik({display:U.optional(),plugin:e,queries:V.YO(C).optional(),links:V.YO(Q).optional()})}let F=V.Ik({kind:V.eu("Panel"),spec:q});function B(e){return V.Ik({kind:V.eu("Panel"),spec:K(e)})}let G=V.Ik({groupId:V.ai(),panelDefinition:F});function H(e){return V.Ik({groupId:V.ai(),panelDefinition:B(e)})}let W=V.Ik({name:V.Yj().optional(),description:V.Yj().optional(),hidden:V.zM().optional()}),X=V.Ik({name:V.Yj().min(1),display:W.optional(),defaultValue:V.Yj().or(V.YO(V.Yj())).optional(),allowAllValue:V.zM(),allowMultiple:V.zM(),customAllValue:V.Yj().optional(),capturingRegexp:V.Yj().optional(),sort:V.k5(["none","alphabetical-asc","alphabetical-desc","numerical-asc","numerical-desc","alphabetical-ci-asc","alphabetical-ci-desc"]).optional(),plugin:A});function J(e){return V.Ik({name:V.Yj().min(1),display:W.optional(),defaultValue:V.Yj().or(V.YO(V.Yj())).optional(),allowAllValue:V.zM(),allowMultiple:V.zM(),customAllValue:V.Yj().optional(),capturingRegexp:V.Yj().optional(),sort:V.k5(["none","alphabetical-asc","alphabetical-desc","numerical-asc","numerical-desc","alphabetical-ci-asc","alphabetical-ci-desc"]).optional(),plugin:e})}let Z=V.Ik({kind:V.eu("ListVariable"),spec:X});function ee(e){return V.Ik({kind:V.eu("ListVariable"),spec:J(e)})}let ea=V.Ik({name:V.Yj().min(1),display:W.optional(),value:V.Yj(),constant:V.zM().optional()}),en=V.Ik({kind:V.eu("TextVariable"),spec:ea}),et=V.gM("kind",[en,Z]);function ei(e){return V.KC([en,ee(e)])}let es=et;function el(e){return V.gM("kind",[V.Ik({kind:V.eu("ListVariable"),spec:J(e)}),V.Ik({kind:V.eu("TextVariable"),spec:ea})])}}}]);