@perses-dev/core 0.0.0-snapshot-scatterplot-fix-imports-95e1b59 → 0.0.0-snapshot-explorer-plugin-c4a7621

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/dist/cjs/index.js +1 -0
  2. package/dist/cjs/model/calculations.js +1 -1
  3. package/dist/cjs/model/index.js +3 -0
  4. package/dist/cjs/model/query.js +12 -0
  5. package/dist/cjs/model/resource.js +14 -3
  6. package/dist/cjs/model/time.js +9 -11
  7. package/dist/cjs/model/trace-data.js +29 -1
  8. package/dist/cjs/model/transforms.js +28 -0
  9. package/dist/cjs/model/units/bytes.js +0 -3
  10. package/dist/cjs/model/units/decimal.js +0 -3
  11. package/dist/cjs/model/units/percent.js +0 -5
  12. package/dist/cjs/model/units/throughput.js +18 -12
  13. package/dist/cjs/model/units/time.js +0 -10
  14. package/dist/cjs/model/units/types.js +0 -13
  15. package/dist/cjs/model/units/units.js +1 -1
  16. package/dist/cjs/model/user.js +16 -0
  17. package/dist/cjs/model/value-mapping.js +16 -0
  18. package/dist/cjs/schema/datasource.js +85 -0
  19. package/dist/cjs/schema/display.js +27 -0
  20. package/dist/cjs/schema/duration.js +25 -0
  21. package/dist/cjs/schema/index.js +40 -0
  22. package/dist/cjs/schema/metadata.js +41 -0
  23. package/dist/cjs/schema/panel.js +106 -0
  24. package/dist/cjs/schema/plugin.js +27 -0
  25. package/dist/cjs/schema/role.js +86 -0
  26. package/dist/cjs/schema/rolebinding.js +65 -0
  27. package/dist/cjs/schema/secret.js +174 -0
  28. package/dist/cjs/schema/user.js +57 -0
  29. package/dist/cjs/schema/variable.js +171 -0
  30. package/dist/cjs/utils/fetch.js +14 -20
  31. package/dist/cjs/utils/index.js +3 -0
  32. package/dist/cjs/utils/memo.js +1 -2
  33. package/dist/cjs/utils/regexp.js +54 -0
  34. package/dist/cjs/utils/text.js +21 -46
  35. package/dist/cjs/utils/transform-data.js +167 -0
  36. package/dist/cjs/utils/value-mapping.js +105 -0
  37. package/dist/index.d.ts +1 -0
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +1 -0
  40. package/dist/index.js.map +1 -1
  41. package/dist/model/calculations.d.ts +1 -1
  42. package/dist/model/calculations.d.ts.map +1 -1
  43. package/dist/model/calculations.js +1 -1
  44. package/dist/model/calculations.js.map +1 -1
  45. package/dist/model/datasource.d.ts +8 -8
  46. package/dist/model/datasource.d.ts.map +1 -1
  47. package/dist/model/datasource.js.map +1 -1
  48. package/dist/model/http.d.ts +5 -0
  49. package/dist/model/http.d.ts.map +1 -1
  50. package/dist/model/http.js.map +1 -1
  51. package/dist/model/index.d.ts +3 -0
  52. package/dist/model/index.d.ts.map +1 -1
  53. package/dist/model/index.js +3 -0
  54. package/dist/model/index.js.map +1 -1
  55. package/dist/model/legend.d.ts +3 -3
  56. package/dist/model/legend.d.ts.map +1 -1
  57. package/dist/model/legend.js.map +1 -1
  58. package/dist/model/panels.d.ts +17 -1
  59. package/dist/model/panels.d.ts.map +1 -1
  60. package/dist/model/panels.js +1 -1
  61. package/dist/model/panels.js.map +1 -1
  62. package/dist/model/project.d.ts +5 -0
  63. package/dist/model/project.d.ts.map +1 -1
  64. package/dist/model/project.js.map +1 -1
  65. package/dist/model/query.d.ts +10 -0
  66. package/dist/model/query.d.ts.map +1 -1
  67. package/dist/model/query.js +8 -3
  68. package/dist/model/query.js.map +1 -1
  69. package/dist/model/resource.d.ts +7 -0
  70. package/dist/model/resource.d.ts.map +1 -1
  71. package/dist/model/resource.js +3 -0
  72. package/dist/model/resource.js.map +1 -1
  73. package/dist/model/time-series-data.d.ts +1 -0
  74. package/dist/model/time-series-data.d.ts.map +1 -1
  75. package/dist/model/time-series-data.js.map +1 -1
  76. package/dist/model/time.d.ts.map +1 -1
  77. package/dist/model/time.js +9 -11
  78. package/dist/model/time.js.map +1 -1
  79. package/dist/model/trace-data.d.ts +80 -7
  80. package/dist/model/trace-data.d.ts.map +1 -1
  81. package/dist/model/trace-data.js +7 -3
  82. package/dist/model/trace-data.js.map +1 -1
  83. package/dist/model/transforms.d.ts +34 -0
  84. package/dist/model/transforms.d.ts.map +1 -0
  85. package/dist/model/transforms.js +21 -0
  86. package/dist/model/transforms.js.map +1 -0
  87. package/dist/model/units/bytes.d.ts +1 -2
  88. package/dist/model/units/bytes.d.ts.map +1 -1
  89. package/dist/model/units/bytes.js +0 -3
  90. package/dist/model/units/bytes.js.map +1 -1
  91. package/dist/model/units/decimal.d.ts +1 -2
  92. package/dist/model/units/decimal.d.ts.map +1 -1
  93. package/dist/model/units/decimal.js +0 -3
  94. package/dist/model/units/decimal.js.map +1 -1
  95. package/dist/model/units/percent.d.ts +1 -2
  96. package/dist/model/units/percent.d.ts.map +1 -1
  97. package/dist/model/units/percent.js +0 -5
  98. package/dist/model/units/percent.js.map +1 -1
  99. package/dist/model/units/throughput.d.ts +1 -2
  100. package/dist/model/units/throughput.d.ts.map +1 -1
  101. package/dist/model/units/throughput.js +18 -12
  102. package/dist/model/units/throughput.js.map +1 -1
  103. package/dist/model/units/time.d.ts +1 -2
  104. package/dist/model/units/time.d.ts.map +1 -1
  105. package/dist/model/units/time.js +0 -10
  106. package/dist/model/units/time.js.map +1 -1
  107. package/dist/model/units/types.d.ts +1 -2
  108. package/dist/model/units/types.d.ts.map +1 -1
  109. package/dist/model/units/types.js +1 -7
  110. package/dist/model/units/types.js.map +1 -1
  111. package/dist/model/units/units.d.ts +2 -0
  112. package/dist/model/units/units.d.ts.map +1 -1
  113. package/dist/model/units/units.js +1 -1
  114. package/dist/model/units/units.js.map +1 -1
  115. package/dist/model/units/utils.d.ts.map +1 -1
  116. package/dist/model/units/utils.js.map +1 -1
  117. package/dist/model/user.d.ts +21 -0
  118. package/dist/model/user.d.ts.map +1 -0
  119. package/dist/model/user.js +15 -0
  120. package/dist/model/user.js.map +1 -0
  121. package/dist/model/value-mapping.d.ts +35 -0
  122. package/dist/model/value-mapping.d.ts.map +1 -0
  123. package/dist/model/value-mapping.js +15 -0
  124. package/dist/model/value-mapping.js.map +1 -0
  125. package/dist/model/variables.d.ts +9 -8
  126. package/dist/model/variables.d.ts.map +1 -1
  127. package/dist/model/variables.js.map +1 -1
  128. package/dist/schema/datasource.d.ts +61 -0
  129. package/dist/schema/datasource.d.ts.map +1 -0
  130. package/dist/schema/datasource.js +54 -0
  131. package/dist/schema/datasource.js.map +1 -0
  132. package/dist/schema/display.d.ts +12 -0
  133. package/dist/schema/display.d.ts.map +1 -0
  134. package/dist/schema/display.js +19 -0
  135. package/dist/schema/display.js.map +1 -0
  136. package/dist/schema/duration.d.ts +3 -0
  137. package/dist/schema/duration.d.ts.map +1 -0
  138. package/dist/schema/duration.js +17 -0
  139. package/dist/schema/duration.js.map +1 -0
  140. package/dist/schema/index.d.ts +12 -0
  141. package/dist/schema/index.d.ts.map +1 -0
  142. package/dist/schema/index.js +25 -0
  143. package/dist/schema/index.js.map +1 -0
  144. package/dist/schema/metadata.d.ts +21 -0
  145. package/dist/schema/metadata.d.ts.map +1 -0
  146. package/dist/schema/metadata.js +22 -0
  147. package/dist/schema/metadata.js.map +1 -0
  148. package/dist/schema/panel.d.ts +13 -0
  149. package/dist/schema/panel.d.ts.map +1 -0
  150. package/dist/schema/panel.js +69 -0
  151. package/dist/schema/panel.js.map +1 -0
  152. package/dist/schema/plugin.d.ts +14 -0
  153. package/dist/schema/plugin.d.ts.map +1 -0
  154. package/dist/schema/plugin.js +19 -0
  155. package/dist/schema/plugin.js.map +1 -0
  156. package/dist/schema/role.d.ts +58 -0
  157. package/dist/schema/role.d.ts.map +1 -0
  158. package/dist/schema/role.js +61 -0
  159. package/dist/schema/role.js.map +1 -0
  160. package/dist/schema/rolebinding.d.ts +58 -0
  161. package/dist/schema/rolebinding.d.ts.map +1 -0
  162. package/dist/schema/rolebinding.js +40 -0
  163. package/dist/schema/rolebinding.js.map +1 -0
  164. package/dist/schema/secret.d.ts +1140 -0
  165. package/dist/schema/secret.d.ts.map +1 -0
  166. package/dist/schema/secret.js +152 -0
  167. package/dist/schema/secret.js.map +1 -0
  168. package/dist/schema/user.d.ts +8 -0
  169. package/dist/schema/user.d.ts.map +1 -0
  170. package/dist/schema/user.js +36 -0
  171. package/dist/schema/user.js.map +1 -0
  172. package/dist/schema/variable.d.ts +92 -0
  173. package/dist/schema/variable.d.ts.map +1 -0
  174. package/dist/schema/variable.js +119 -0
  175. package/dist/schema/variable.js.map +1 -0
  176. package/dist/utils/fetch.d.ts +5 -2
  177. package/dist/utils/fetch.d.ts.map +1 -1
  178. package/dist/utils/fetch.js +15 -21
  179. package/dist/utils/fetch.js.map +1 -1
  180. package/dist/utils/index.d.ts +3 -0
  181. package/dist/utils/index.d.ts.map +1 -1
  182. package/dist/utils/index.js +3 -0
  183. package/dist/utils/index.js.map +1 -1
  184. package/dist/utils/is-empty-object.d.ts.map +1 -1
  185. package/dist/utils/is-empty-object.js.map +1 -1
  186. package/dist/utils/memo.d.ts.map +1 -1
  187. package/dist/utils/memo.js +1 -2
  188. package/dist/utils/memo.js.map +1 -1
  189. package/dist/utils/panel-refs.d.ts +2 -2
  190. package/dist/utils/panel-refs.d.ts.map +1 -1
  191. package/dist/utils/panel-refs.js.map +1 -1
  192. package/dist/utils/regexp.d.ts +11 -0
  193. package/dist/utils/regexp.d.ts.map +1 -0
  194. package/dist/utils/regexp.js +42 -0
  195. package/dist/utils/regexp.js.map +1 -0
  196. package/dist/utils/text.d.ts +7 -33
  197. package/dist/utils/text.d.ts.map +1 -1
  198. package/dist/utils/text.js +21 -52
  199. package/dist/utils/text.js.map +1 -1
  200. package/dist/utils/time-series-data.d.ts.map +1 -1
  201. package/dist/utils/time-series-data.js.map +1 -1
  202. package/dist/utils/transform-data.d.ts +8 -0
  203. package/dist/utils/transform-data.d.ts.map +1 -0
  204. package/dist/utils/transform-data.js +221 -0
  205. package/dist/utils/transform-data.js.map +1 -0
  206. package/dist/utils/value-mapping.d.ts +3 -0
  207. package/dist/utils/value-mapping.d.ts.map +1 -0
  208. package/dist/utils/value-mapping.js +97 -0
  209. package/dist/utils/value-mapping.js.map +1 -0
  210. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/model/datasource.ts"],"sourcesContent":["// Copyright 2023 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 { Definition, UnknownSpec } from './definitions';\nimport { Metadata, ProjectMetadata } from './resource';\nimport { Display } from './display';\n\n/**\n * A Datasource that's available across all projects.\n */\nexport interface GlobalDatasource {\n kind: 'GlobalDatasource';\n metadata: Metadata;\n spec: DatasourceSpec;\n}\n\n/**\n * A Datasource resource, that belongs to a project.\n */\nexport interface ProjectDatasource {\n kind: 'Datasource';\n metadata: ProjectMetadata;\n spec: DatasourceSpec;\n}\n\nexport type Datasource = ProjectDatasource | GlobalDatasource;\n\nexport interface DatasourceSpec<PluginSpec = UnknownSpec> {\n display?: Display;\n default: boolean;\n plugin: Definition<PluginSpec>;\n}\n\n/**\n * A selector for pointing at a specific Datasource.\n */\nexport interface DatasourceSelector {\n /**\n * Kind of the datasource.\n */\n kind: string;\n\n /**\n * Name of the datasource.\n * If omitted, it's assumed that you target the default datasource for the specified kind (and group, if set)\n */\n name?: string;\n}\n\n/**\n * An intermediary type to regroup the name and the spec of a datasource.\n */\nexport interface DatasourceDefinition {\n name: string;\n spec: DatasourceSpec;\n}\n"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAgDjC;;CAEC,GACD,WAGC"}
1
+ {"version":3,"sources":["../../src/model/datasource.ts"],"sourcesContent":["// Copyright 2023 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 { Definition, UnknownSpec } from './definitions';\nimport { Metadata, ProjectMetadata } from './resource';\nimport { Display } from './display';\n\nexport interface DatasourceSpec<PluginSpec = UnknownSpec> {\n display?: Display;\n default: boolean;\n plugin: Definition<PluginSpec>;\n}\n\n/**\n * A Datasource that's available across all projects.\n */\nexport interface GlobalDatasourceResource {\n kind: 'GlobalDatasource';\n metadata: Metadata;\n spec: DatasourceSpec;\n}\n\n/**\n * A Datasource resource, that belongs to a project.\n */\nexport interface DatasourceResource {\n kind: 'Datasource';\n metadata: ProjectMetadata;\n spec: DatasourceSpec;\n}\n\nexport type Datasource = DatasourceResource | GlobalDatasourceResource;\n\n/**\n * A selector for pointing at a specific Datasource.\n */\nexport interface DatasourceSelector {\n /**\n * Kind of the datasource.\n */\n kind: string;\n\n /**\n * Name of the datasource.\n * If omitted, it's assumed that you target the default datasource for the specified kind (and group, if set)\n */\n name?: string;\n}\n\n/**\n * An intermediary type to regroup the name and the spec of a datasource.\n */\nexport interface DatasourceDefinition {\n name: string;\n spec: DatasourceSpec;\n}\n"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAgDjC;;CAEC,GACD,WAGC"}
@@ -1,2 +1,7 @@
1
+ import { HTTPProxy } from './http-proxy';
1
2
  export type RequestHeaders = Record<string, string>;
3
+ export interface HTTPDatasourceSpec {
4
+ directUrl?: string;
5
+ proxy?: HTTPProxy;
6
+ }
2
7
  //# sourceMappingURL=http.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/model/http.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/model/http.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/model/http.ts"],"sourcesContent":["// Copyright 2023 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\nexport type RequestHeaders = Record<string, string>;\n"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,WAAoD"}
1
+ {"version":3,"sources":["../../src/model/http.ts"],"sourcesContent":["// Copyright 2023 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 { HTTPProxy } from './http-proxy';\n\nexport type RequestHeaders = Record<string, string>;\n\nexport interface HTTPDatasourceSpec {\n directUrl?: string;\n proxy?: HTTPProxy;\n}\n"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAMjC,WAGC"}
@@ -22,6 +22,9 @@ export * from './time';
22
22
  export * from './time-series-data';
23
23
  export * from './time-series-queries';
24
24
  export * from './trace-data';
25
+ export * from './transforms';
25
26
  export * from './units';
27
+ export * from './user';
26
28
  export * from './variables';
29
+ export * from './value-mapping';
27
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAaA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAaA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
@@ -34,7 +34,10 @@ export * from './time';
34
34
  export * from './time-series-data';
35
35
  export * from './time-series-queries';
36
36
  export * from './trace-data';
37
+ export * from './transforms';
37
38
  export * from './units';
39
+ export * from './user';
38
40
  export * from './variables';
41
+ export * from './value-mapping';
39
42
 
40
43
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/model/index.ts"],"sourcesContent":["// Copyright 2023 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\nexport * from './calculations';\nexport * from './dashboard';\nexport * from './datasource';\nexport * from './definitions';\nexport * from './display';\nexport * from './ephemeraldashboard';\nexport * from './http';\nexport * from './http-proxy';\nexport * from './kind';\nexport * from './layout';\nexport * from './legend';\nexport * from './notice';\nexport * from './panels';\nexport * from './project';\nexport * from './query';\nexport * from './resource';\nexport * from './roles';\nexport * from './rolebindings';\nexport * from './secrets';\nexport * from './thresholds';\nexport * from './time';\nexport * from './time-series-data';\nexport * from './time-series-queries';\nexport * from './trace-data';\nexport * from './units';\nexport * from './variables';\n"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,cAAc,iBAAiB;AAC/B,cAAc,cAAc;AAC5B,cAAc,eAAe;AAC7B,cAAc,gBAAgB;AAC9B,cAAc,YAAY;AAC1B,cAAc,uBAAuB;AACrC,cAAc,SAAS;AACvB,cAAc,eAAe;AAC7B,cAAc,SAAS;AACvB,cAAc,WAAW;AACzB,cAAc,WAAW;AACzB,cAAc,WAAW;AACzB,cAAc,WAAW;AACzB,cAAc,YAAY;AAC1B,cAAc,UAAU;AACxB,cAAc,aAAa;AAC3B,cAAc,UAAU;AACxB,cAAc,iBAAiB;AAC/B,cAAc,YAAY;AAC1B,cAAc,eAAe;AAC7B,cAAc,SAAS;AACvB,cAAc,qBAAqB;AACnC,cAAc,wBAAwB;AACtC,cAAc,eAAe;AAC7B,cAAc,UAAU;AACxB,cAAc,cAAc"}
1
+ {"version":3,"sources":["../../src/model/index.ts"],"sourcesContent":["// Copyright 2023 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\nexport * from './calculations';\nexport * from './dashboard';\nexport * from './datasource';\nexport * from './definitions';\nexport * from './display';\nexport * from './ephemeraldashboard';\nexport * from './http';\nexport * from './http-proxy';\nexport * from './kind';\nexport * from './layout';\nexport * from './legend';\nexport * from './notice';\nexport * from './panels';\nexport * from './project';\nexport * from './query';\nexport * from './resource';\nexport * from './roles';\nexport * from './rolebindings';\nexport * from './secrets';\nexport * from './thresholds';\nexport * from './time';\nexport * from './time-series-data';\nexport * from './time-series-queries';\nexport * from './trace-data';\nexport * from './transforms';\nexport * from './units';\nexport * from './user';\nexport * from './variables';\nexport * from './value-mapping';\n"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,cAAc,iBAAiB;AAC/B,cAAc,cAAc;AAC5B,cAAc,eAAe;AAC7B,cAAc,gBAAgB;AAC9B,cAAc,YAAY;AAC1B,cAAc,uBAAuB;AACrC,cAAc,SAAS;AACvB,cAAc,eAAe;AAC7B,cAAc,SAAS;AACvB,cAAc,WAAW;AACzB,cAAc,WAAW;AACzB,cAAc,WAAW;AACzB,cAAc,WAAW;AACzB,cAAc,YAAY;AAC1B,cAAc,UAAU;AACxB,cAAc,aAAa;AAC3B,cAAc,UAAU;AACxB,cAAc,iBAAiB;AAC/B,cAAc,YAAY;AAC1B,cAAc,eAAe;AAC7B,cAAc,SAAS;AACvB,cAAc,qBAAqB;AACnC,cAAc,wBAAwB;AACtC,cAAc,eAAe;AAC7B,cAAc,eAAe;AAC7B,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,cAAc;AAC5B,cAAc,kBAAkB"}
@@ -13,7 +13,7 @@ export declare function isValidLegendPosition(position: LegendPositions): boolea
13
13
  export declare function isValidLegendMode(mode: LegendMode): boolean;
14
14
  export declare function isValidLegendSize(size: LegendSize): boolean;
15
15
  export declare const DEFAULT_LEGEND: Required<LegendOptionsBase>;
16
- export declare function getLegendPosition(position?: LegendPositions): "bottom" | "right";
17
- export declare function getLegendMode(mode?: LegendMode): "list" | "table";
18
- export declare function getLegendSize(size?: LegendSize): "small" | "medium";
16
+ export declare function getLegendPosition(position?: LegendPositions): 'bottom' | 'right';
17
+ export declare function getLegendMode(mode?: LegendMode): 'list' | 'table';
18
+ export declare function getLegendSize(size?: LegendSize): 'small' | 'medium';
19
19
  //# sourceMappingURL=legend.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"legend.d.ts","sourceRoot":"","sources":["../../src/model/legend.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,eAAe,8BAA+B,CAAC;AAC5D,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,eAAO,MAAM,WAAW,4BAA6B,CAAC;AACtD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,eAAO,MAAM,WAAW,8BAA+B,CAAC;AACxD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAGtD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,eAAe,CAAC;IAC1B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,eAAe,WAE9D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,WAEjD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,WAEjD;AAED,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,iBAAiB,CAItD,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,eAAe,sBAQ3D;AAED,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,UAAU,oBAM9C;AAED,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,UAAU,sBAM9C"}
1
+ {"version":3,"file":"legend.d.ts","sourceRoot":"","sources":["../../src/model/legend.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,eAAe,8BAA+B,CAAC;AAC5D,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,eAAO,MAAM,WAAW,4BAA6B,CAAC;AACtD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,eAAO,MAAM,WAAW,8BAA+B,CAAC;AACxD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAGtD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,eAAe,CAAC;IAC1B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAExE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAE3D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAE3D;AAED,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,iBAAiB,CAItD,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,eAAe,GAAG,QAAQ,GAAG,OAAO,CAQhF;AAED,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAMjE;AAED,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,CAMnE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/model/legend.ts"],"sourcesContent":["// Copyright 2023 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\n// This file contains common/shared legend model code.\n// See the `components` package for legend model code specific to the Legend\n// component and the `plugin-system` package for legend model code specific to\n// panel plugin specs.\n\nexport const legendPositions = ['bottom', 'right'] as const;\nexport type LegendPositions = (typeof legendPositions)[number];\n\nexport const legendModes = ['list', 'table'] as const;\nexport type LegendMode = (typeof legendModes)[number];\n\nexport const legendSizes = ['small', 'medium'] as const;\nexport type LegendSize = (typeof legendSizes)[number];\n\n// Common legend options used across some UI components and panel specifications\nexport interface LegendOptionsBase {\n position: LegendPositions;\n mode?: LegendMode;\n size?: LegendSize;\n}\n\nexport function isValidLegendPosition(position: LegendPositions) {\n return (legendPositions as readonly string[]).includes(position);\n}\n\nexport function isValidLegendMode(mode: LegendMode) {\n return (legendModes as readonly string[]).includes(mode);\n}\n\nexport function isValidLegendSize(size: LegendSize) {\n return (legendSizes as readonly string[]).includes(size);\n}\n\nexport const DEFAULT_LEGEND: Required<LegendOptionsBase> = {\n position: 'bottom',\n mode: 'list',\n size: 'medium',\n};\n\nexport function getLegendPosition(position?: LegendPositions) {\n if (position === undefined) {\n return DEFAULT_LEGEND.position;\n }\n if (isValidLegendPosition(position)) {\n return position;\n }\n return DEFAULT_LEGEND.position;\n}\n\nexport function getLegendMode(mode?: LegendMode) {\n if (!mode || !isValidLegendMode(mode)) {\n return DEFAULT_LEGEND.mode;\n }\n\n return mode;\n}\n\nexport function getLegendSize(size?: LegendSize) {\n if (!size || !isValidLegendSize(size)) {\n return DEFAULT_LEGEND.size;\n }\n\n return size;\n}\n"],"names":["legendPositions","legendModes","legendSizes","isValidLegendPosition","position","includes","isValidLegendMode","mode","isValidLegendSize","size","DEFAULT_LEGEND","getLegendPosition","undefined","getLegendMode","getLegendSize"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,sDAAsD;AACtD,4EAA4E;AAC5E,+EAA+E;AAC/E,sBAAsB;AAEtB,OAAO,MAAMA,kBAAkB;IAAC;IAAU;CAAQ,CAAU;AAG5D,OAAO,MAAMC,cAAc;IAAC;IAAQ;CAAQ,CAAU;AAGtD,OAAO,MAAMC,cAAc;IAAC;IAAS;CAAS,CAAU;AAUxD,OAAO,SAASC,sBAAsBC,QAAyB;IAC7D,OAAO,AAACJ,gBAAsCK,QAAQ,CAACD;AACzD;AAEA,OAAO,SAASE,kBAAkBC,IAAgB;IAChD,OAAO,AAACN,YAAkCI,QAAQ,CAACE;AACrD;AAEA,OAAO,SAASC,kBAAkBC,IAAgB;IAChD,OAAO,AAACP,YAAkCG,QAAQ,CAACI;AACrD;AAEA,OAAO,MAAMC,iBAA8C;IACzDN,UAAU;IACVG,MAAM;IACNE,MAAM;AACR,EAAE;AAEF,OAAO,SAASE,kBAAkBP,QAA0B;IAC1D,IAAIA,aAAaQ,WAAW;QAC1B,OAAOF,eAAeN,QAAQ;IAChC;IACA,IAAID,sBAAsBC,WAAW;QACnC,OAAOA;IACT;IACA,OAAOM,eAAeN,QAAQ;AAChC;AAEA,OAAO,SAASS,cAAcN,IAAiB;IAC7C,IAAI,CAACA,QAAQ,CAACD,kBAAkBC,OAAO;QACrC,OAAOG,eAAeH,IAAI;IAC5B;IAEA,OAAOA;AACT;AAEA,OAAO,SAASO,cAAcL,IAAiB;IAC7C,IAAI,CAACA,QAAQ,CAACD,kBAAkBC,OAAO;QACrC,OAAOC,eAAeD,IAAI;IAC5B;IAEA,OAAOA;AACT"}
1
+ {"version":3,"sources":["../../src/model/legend.ts"],"sourcesContent":["// Copyright 2023 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\n// This file contains common/shared legend model code.\n// See the `components` package for legend model code specific to the Legend\n// component and the `plugin-system` package for legend model code specific to\n// panel plugin specs.\n\nexport const legendPositions = ['bottom', 'right'] as const;\nexport type LegendPositions = (typeof legendPositions)[number];\n\nexport const legendModes = ['list', 'table'] as const;\nexport type LegendMode = (typeof legendModes)[number];\n\nexport const legendSizes = ['small', 'medium'] as const;\nexport type LegendSize = (typeof legendSizes)[number];\n\n// Common legend options used across some UI components and panel specifications\nexport interface LegendOptionsBase {\n position: LegendPositions;\n mode?: LegendMode;\n size?: LegendSize;\n}\n\nexport function isValidLegendPosition(position: LegendPositions): boolean {\n return (legendPositions as readonly string[]).includes(position);\n}\n\nexport function isValidLegendMode(mode: LegendMode): boolean {\n return (legendModes as readonly string[]).includes(mode);\n}\n\nexport function isValidLegendSize(size: LegendSize): boolean {\n return (legendSizes as readonly string[]).includes(size);\n}\n\nexport const DEFAULT_LEGEND: Required<LegendOptionsBase> = {\n position: 'bottom',\n mode: 'list',\n size: 'medium',\n};\n\nexport function getLegendPosition(position?: LegendPositions): 'bottom' | 'right' {\n if (position === undefined) {\n return DEFAULT_LEGEND.position;\n }\n if (isValidLegendPosition(position)) {\n return position;\n }\n return DEFAULT_LEGEND.position;\n}\n\nexport function getLegendMode(mode?: LegendMode): 'list' | 'table' {\n if (!mode || !isValidLegendMode(mode)) {\n return DEFAULT_LEGEND.mode;\n }\n\n return mode;\n}\n\nexport function getLegendSize(size?: LegendSize): 'small' | 'medium' {\n if (!size || !isValidLegendSize(size)) {\n return DEFAULT_LEGEND.size;\n }\n\n return size;\n}\n"],"names":["legendPositions","legendModes","legendSizes","isValidLegendPosition","position","includes","isValidLegendMode","mode","isValidLegendSize","size","DEFAULT_LEGEND","getLegendPosition","undefined","getLegendMode","getLegendSize"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,sDAAsD;AACtD,4EAA4E;AAC5E,+EAA+E;AAC/E,sBAAsB;AAEtB,OAAO,MAAMA,kBAAkB;IAAC;IAAU;CAAQ,CAAU;AAG5D,OAAO,MAAMC,cAAc;IAAC;IAAQ;CAAQ,CAAU;AAGtD,OAAO,MAAMC,cAAc;IAAC;IAAS;CAAS,CAAU;AAUxD,OAAO,SAASC,sBAAsBC,QAAyB;IAC7D,OAAO,AAACJ,gBAAsCK,QAAQ,CAACD;AACzD;AAEA,OAAO,SAASE,kBAAkBC,IAAgB;IAChD,OAAO,AAACN,YAAkCI,QAAQ,CAACE;AACrD;AAEA,OAAO,SAASC,kBAAkBC,IAAgB;IAChD,OAAO,AAACP,YAAkCG,QAAQ,CAACI;AACrD;AAEA,OAAO,MAAMC,iBAA8C;IACzDN,UAAU;IACVG,MAAM;IACNE,MAAM;AACR,EAAE;AAEF,OAAO,SAASE,kBAAkBP,QAA0B;IAC1D,IAAIA,aAAaQ,WAAW;QAC1B,OAAOF,eAAeN,QAAQ;IAChC;IACA,IAAID,sBAAsBC,WAAW;QACnC,OAAOA;IACT;IACA,OAAOM,eAAeN,QAAQ;AAChC;AAEA,OAAO,SAASS,cAAcN,IAAiB;IAC7C,IAAI,CAACA,QAAQ,CAACD,kBAAkBC,OAAO;QACrC,OAAOG,eAAeH,IAAI;IAC5B;IAEA,OAAOA;AACT;AAEA,OAAO,SAASO,cAAcL,IAAiB;IAC7C,IAAI,CAACA,QAAQ,CAACD,kBAAkBC,OAAO;QACrC,OAAOC,eAAeD,IAAI;IAC5B;IAEA,OAAOA;AACT"}
@@ -1,5 +1,12 @@
1
1
  import { Definition, UnknownSpec } from './definitions';
2
2
  import { QueryDefinition } from './query';
3
+ export interface Link {
4
+ name?: string;
5
+ url: string;
6
+ tooltip?: string;
7
+ renderVariables?: boolean;
8
+ targetBlank?: boolean;
9
+ }
3
10
  export interface PanelDisplay {
4
11
  name: string;
5
12
  description?: string;
@@ -7,10 +14,11 @@ export interface PanelDisplay {
7
14
  export interface PanelDefinition<PluginSpec = UnknownSpec> extends Definition<PanelSpec<PluginSpec>> {
8
15
  kind: 'Panel';
9
16
  }
10
- export interface PanelSpec<PluginSpec> {
17
+ export interface PanelSpec<PluginSpec = UnknownSpec> {
11
18
  display: PanelDisplay;
12
19
  plugin: Definition<PluginSpec>;
13
20
  queries?: QueryDefinition[];
21
+ links?: Link[];
14
22
  }
15
23
  /**
16
24
  * A reference to a panel defined in the DashboardSpec.
@@ -18,4 +26,12 @@ export interface PanelSpec<PluginSpec> {
18
26
  export interface PanelRef {
19
27
  $ref: `#/spec/panels/${string}`;
20
28
  }
29
+ export type PanelGroupId = number;
30
+ /**
31
+ * Panel values that can be edited in the panel editor.
32
+ */
33
+ export interface PanelEditorValues {
34
+ groupId: PanelGroupId;
35
+ panelDefinition: PanelDefinition;
36
+ }
21
37
  //# sourceMappingURL=panels.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"panels.d.ts","sourceRoot":"","sources":["../../src/model/panels.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe,CAAC,UAAU,GAAG,WAAW,CAAE,SAAQ,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAClG,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,SAAS,CAAC,UAAU;IACnC,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,iBAAiB,MAAM,EAAE,CAAC;CACjC"}
1
+ {"version":3,"file":"panels.d.ts","sourceRoot":"","sources":["../../src/model/panels.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,WAAW,IAAI;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe,CAAC,UAAU,GAAG,WAAW,CAAE,SAAQ,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAClG,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,SAAS,CAAC,UAAU,GAAG,WAAW;IACjD,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,iBAAiB,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,YAAY,CAAC;IACtB,eAAe,EAAE,eAAe,CAAC;CAClC"}
@@ -11,7 +11,7 @@
11
11
  // See the License for the specific language governing permissions and
12
12
  // limitations under the License.
13
13
  /**
14
- * A reference to a panel defined in the DashboardSpec.
14
+ * Panel values that can be edited in the panel editor.
15
15
  */ export { };
16
16
 
17
17
  //# sourceMappingURL=panels.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/model/panels.ts"],"sourcesContent":["// Copyright 2023 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 { Definition, UnknownSpec } from './definitions';\nimport { QueryDefinition } from './query';\n\nexport interface PanelDisplay {\n name: string;\n description?: string;\n}\n\nexport interface PanelDefinition<PluginSpec = UnknownSpec> extends Definition<PanelSpec<PluginSpec>> {\n kind: 'Panel';\n}\n\nexport interface PanelSpec<PluginSpec> {\n display: PanelDisplay;\n plugin: Definition<PluginSpec>;\n queries?: QueryDefinition[];\n}\n\n/**\n * A reference to a panel defined in the DashboardSpec.\n */\nexport interface PanelRef {\n $ref: `#/spec/panels/${string}`;\n}\n"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAoBjC;;CAEC,GACD,WAEC"}
1
+ {"version":3,"sources":["../../src/model/panels.ts"],"sourcesContent":["// Copyright 2023 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 { Definition, UnknownSpec } from './definitions';\nimport { QueryDefinition } from './query';\n\nexport interface Link {\n name?: string;\n url: string;\n tooltip?: string;\n renderVariables?: boolean;\n targetBlank?: boolean;\n}\n\nexport interface PanelDisplay {\n name: string;\n description?: string;\n}\n\nexport interface PanelDefinition<PluginSpec = UnknownSpec> extends Definition<PanelSpec<PluginSpec>> {\n kind: 'Panel';\n}\n\nexport interface PanelSpec<PluginSpec = UnknownSpec> {\n display: PanelDisplay;\n plugin: Definition<PluginSpec>;\n queries?: QueryDefinition[];\n links?: Link[];\n}\n\n/**\n * A reference to a panel defined in the DashboardSpec.\n */\nexport interface PanelRef {\n $ref: `#/spec/panels/${string}`;\n}\n\nexport type PanelGroupId = number;\n\n/**\n * Panel values that can be edited in the panel editor.\n */\nexport interface PanelEditorValues {\n groupId: PanelGroupId;\n panelDefinition: PanelDefinition;\n}\n"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAsCjC;;CAEC,GACD,WAGC"}
@@ -1,6 +1,11 @@
1
1
  import { Metadata } from './resource';
2
+ import { Display } from './display';
2
3
  export interface ProjectResource {
3
4
  kind: 'Project';
4
5
  metadata: Metadata;
6
+ spec: ProjectSpec;
7
+ }
8
+ export interface ProjectSpec {
9
+ display?: Display;
5
10
  }
6
11
  //# sourceMappingURL=project.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/model/project.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;CACpB"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/model/project.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/model/project.ts"],"sourcesContent":["// Copyright 2023 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 { Metadata } from './resource';\n\nexport interface ProjectResource {\n kind: 'Project';\n metadata: Metadata;\n}\n"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAIjC,WAGC"}
1
+ {"version":3,"sources":["../../src/model/project.ts"],"sourcesContent":["// Copyright 2023 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 { Metadata } from './resource';\nimport { Display } from './display';\n\nexport interface ProjectResource {\n kind: 'Project';\n metadata: Metadata;\n spec: ProjectSpec;\n}\n\nexport interface ProjectSpec {\n display?: Display;\n}\n"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAWjC,WAEC"}
@@ -18,6 +18,16 @@ export interface QueryType {
18
18
  TimeSeriesQuery: TimeSeriesData;
19
19
  TraceQuery: TraceData;
20
20
  }
21
+ /**
22
+ * Check if the given type is a valid {@link QueryPluginType} with compile time safety
23
+ * @param type
24
+ */
25
+ export declare function isValidQueryPluginType(type: string): type is QueryPluginType;
26
+ /**
27
+ * Extract the keys of QueryType
28
+ * ex: 'TimeSeriesQuery'
29
+ */
30
+ export type QueryPluginType = keyof QueryType;
21
31
  /**
22
32
  * Values of QueryType
23
33
  * ex: 'TimeSeriesData'
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/model/query.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,UAAU,SAAS,CAAC,UAAU;IAC5B,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;CAChC;AACD;;GAEG;AAGH,MAAM,WAAW,eAAe,CAAC,IAAI,GAAG,GAAG,EAAE,UAAU,GAAG,WAAW;IACnE,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,eAAe,EAAE,cAAc,CAAC;IAChC,UAAU,EAAE,SAAS,CAAC;CAGvB;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/model/query.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,UAAU,SAAS,CAAC,UAAU;IAC5B,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;CAChC;AACD;;GAEG;AAGH,MAAM,WAAW,eAAe,CAAC,IAAI,GAAG,GAAG,EAAE,UAAU,GAAG,WAAW;IACnE,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,eAAe,EAAE,cAAc,CAAC;IAChC,UAAU,EAAE,SAAS,CAAC;CAGvB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,eAAe,CAE5E;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,SAAS,CAAC;AAE9C;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,SAAS,CAAC,CAAC"}
@@ -11,8 +11,13 @@
11
11
  // See the License for the specific language governing permissions and
12
12
  // limitations under the License.
13
13
  /**
14
- * Values of QueryType
15
- * ex: 'TimeSeriesData'
16
- */ export { };
14
+ * Check if the given type is a valid {@link QueryPluginType} with compile time safety
15
+ * @param type
16
+ */ export function isValidQueryPluginType(type) {
17
+ return [
18
+ 'TimeSeriesQuery',
19
+ 'TraceQuery'
20
+ ].includes(type);
21
+ }
17
22
 
18
23
  //# sourceMappingURL=query.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/model/query.ts"],"sourcesContent":["// Copyright 2023 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 { Definition, UnknownSpec } from './definitions';\nimport { TimeSeriesData } from './time-series-data';\nimport { TraceData } from './trace-data';\n\ninterface QuerySpec<PluginSpec> {\n plugin: Definition<PluginSpec>;\n}\n/**\n * A generic query definition interface that can be extended to support more than just TimeSeriesQuery\n */\n// Kind needs to be `any` because otherwise typescript will complain 'unknown' is not assignable to type '\"TimeSeriesQuery\"' in a few places\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface QueryDefinition<Kind = any, PluginSpec = UnknownSpec> {\n kind: Kind;\n spec: QuerySpec<PluginSpec>;\n}\n\n/**\n * Mapping the query plugin to the data type it returns\n */\nexport interface QueryType {\n TimeSeriesQuery: TimeSeriesData;\n TraceQuery: TraceData;\n // in the future we can add other query plugin and data types\n // for example: we can add something like `LogsQuery: LogsData;`\n}\n\n/**\n * Values of QueryType\n * ex: 'TimeSeriesData'\n */\nexport type QueryDataType = QueryType[keyof QueryType];\n"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AA6BjC;;;CAGC,GACD,WAAuD"}
1
+ {"version":3,"sources":["../../src/model/query.ts"],"sourcesContent":["// Copyright 2023 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 { Definition, UnknownSpec } from './definitions';\nimport { TimeSeriesData } from './time-series-data';\nimport { TraceData } from './trace-data';\n\ninterface QuerySpec<PluginSpec> {\n plugin: Definition<PluginSpec>;\n}\n/**\n * A generic query definition interface that can be extended to support more than just TimeSeriesQuery\n */\n// Kind needs to be `any` because otherwise typescript will complain 'unknown' is not assignable to type '\"TimeSeriesQuery\"' in a few places\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface QueryDefinition<Kind = any, PluginSpec = UnknownSpec> {\n kind: Kind;\n spec: QuerySpec<PluginSpec>;\n}\n\n/**\n * Mapping the query plugin to the data type it returns\n */\nexport interface QueryType {\n TimeSeriesQuery: TimeSeriesData;\n TraceQuery: TraceData;\n // in the future we can add other query plugin and data types\n // for example: we can add something like `LogsQuery: LogsData;`\n}\n\n/**\n * Check if the given type is a valid {@link QueryPluginType} with compile time safety\n * @param type\n */\nexport function isValidQueryPluginType(type: string): type is QueryPluginType {\n return ['TimeSeriesQuery', 'TraceQuery'].includes(type as QueryPluginType);\n}\n\n/**\n * Extract the keys of QueryType\n * ex: 'TimeSeriesQuery'\n */\nexport type QueryPluginType = keyof QueryType;\n\n/**\n * Values of QueryType\n * ex: 'TimeSeriesData'\n */\nexport type QueryDataType = QueryType[keyof QueryType];\n"],"names":["isValidQueryPluginType","type","includes"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AA6BjC;;;CAGC,GACD,OAAO,SAASA,uBAAuBC,IAAY;IACjD,OAAO;QAAC;QAAmB;KAAa,CAACC,QAAQ,CAACD;AACpD"}
@@ -1,3 +1,5 @@
1
+ import { Kind } from './kind';
2
+ export declare function isProjectMetadata(metadata: Metadata | ProjectMetadata): metadata is ProjectMetadata;
1
3
  export interface Metadata {
2
4
  name: string;
3
5
  createdAt?: string;
@@ -7,5 +9,10 @@ export interface Metadata {
7
9
  export interface ProjectMetadata extends Metadata {
8
10
  project: string;
9
11
  }
12
+ export interface Resource {
13
+ kind: Kind;
14
+ metadata: Metadata | ProjectMetadata;
15
+ spec: any;
16
+ }
10
17
  export declare function getMetadataProject(metadata: ProjectMetadata | Metadata): string | undefined;
11
18
  //# sourceMappingURL=resource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/model/resource.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAgB,SAAQ,QAAQ;IAC/C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAE3F"}
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/model/resource.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,eAAe,GAAG,QAAQ,IAAI,eAAe,CAEnG;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAgB,SAAQ,QAAQ;IAC/C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAAC;IAErC,IAAI,EAAE,GAAG,CAAC;CACX;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAE3F"}
@@ -10,6 +10,9 @@
10
10
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  // See the License for the specific language governing permissions and
12
12
  // limitations under the License.
13
+ export function isProjectMetadata(metadata) {
14
+ return 'project' in metadata;
15
+ }
13
16
  export function getMetadataProject(metadata) {
14
17
  return 'project' in metadata ? metadata.project : undefined;
15
18
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/model/resource.ts"],"sourcesContent":["// Copyright 2023 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\nexport interface Metadata {\n name: string;\n createdAt?: string;\n updatedAt?: string;\n version?: number;\n}\n\nexport interface ProjectMetadata extends Metadata {\n project: string;\n}\n\nexport function getMetadataProject(metadata: ProjectMetadata | Metadata): string | undefined {\n return 'project' in metadata ? metadata.project : undefined;\n}\n"],"names":["getMetadataProject","metadata","project","undefined"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAajC,OAAO,SAASA,mBAAmBC,QAAoC;IACrE,OAAO,aAAaA,WAAWA,SAASC,OAAO,GAAGC;AACpD"}
1
+ {"version":3,"sources":["../../src/model/resource.ts"],"sourcesContent":["// Copyright 2023 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 { Kind } from './kind';\n\nexport function isProjectMetadata(metadata: Metadata | ProjectMetadata): metadata is ProjectMetadata {\n return 'project' in metadata;\n}\n\nexport interface Metadata {\n name: string;\n createdAt?: string;\n updatedAt?: string;\n version?: number;\n}\n\nexport interface ProjectMetadata extends Metadata {\n project: string;\n}\n\nexport interface Resource {\n kind: Kind;\n metadata: Metadata | ProjectMetadata;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n spec: any;\n}\n\nexport function getMetadataProject(metadata: ProjectMetadata | Metadata): string | undefined {\n return 'project' in metadata ? metadata.project : undefined;\n}\n"],"names":["isProjectMetadata","metadata","getMetadataProject","project","undefined"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAIjC,OAAO,SAASA,kBAAkBC,QAAoC;IACpE,OAAO,aAAaA;AACtB;AAoBA,OAAO,SAASC,mBAAmBD,QAAoC;IACrE,OAAO,aAAaA,WAAWA,SAASE,OAAO,GAAGC;AACpD"}
@@ -16,6 +16,7 @@ export interface TimeSeriesData {
16
16
  export interface TimeSeries {
17
17
  name: string;
18
18
  values: TimeSeriesValueTuple[];
19
+ histograms?: any[];
19
20
  formattedName?: string;
20
21
  labels?: Labels;
21
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"time-series-data.d.ts","sourceRoot":"","sources":["../../src/model/time-series-data.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAErE,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B"}
1
+ {"version":3,"file":"time-series-data.d.ts","sourceRoot":"","sources":["../../src/model/time-series-data.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAErE,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/model/time-series-data.ts"],"sourcesContent":["// Copyright 2023 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 { Notice } from './notice';\nimport { AbsoluteTimeRange } from './time';\nimport { Labels, TimeSeriesValueTuple } from './time-series-queries';\n\nexport interface TimeScale {\n startMs: number;\n endMs: number;\n stepMs: number;\n rangeMs: number;\n}\n\nexport interface TimeSeriesData {\n timeRange?: AbsoluteTimeRange;\n stepMs?: number;\n series: TimeSeries[];\n metadata?: TimeSeriesMetadata;\n}\n\nexport interface TimeSeries {\n name: string;\n values: TimeSeriesValueTuple[];\n formattedName?: string;\n labels?: Labels;\n}\n\nexport interface TimeSeriesMetadata {\n notices?: Notice[];\n\n /**\n * The raw query that is executed to generate this data.\n * Useful when needing to inspect the query that was executed\n * after variables and other context modifications have been applied.\n */\n executedQueryString?: string;\n}\n"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AA2BjC,WASC"}
1
+ {"version":3,"sources":["../../src/model/time-series-data.ts"],"sourcesContent":["// Copyright 2023 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 { Notice } from './notice';\nimport { AbsoluteTimeRange } from './time';\nimport { Labels, TimeSeriesValueTuple } from './time-series-queries';\n\nexport interface TimeScale {\n startMs: number;\n endMs: number;\n stepMs: number;\n rangeMs: number;\n}\n\nexport interface TimeSeriesData {\n timeRange?: AbsoluteTimeRange;\n stepMs?: number;\n series: TimeSeries[];\n metadata?: TimeSeriesMetadata;\n}\n\nexport interface TimeSeries {\n name: string;\n values: TimeSeriesValueTuple[];\n histograms?: any[]; // eslint-disable-line @typescript-eslint/no-explicit-any\n formattedName?: string;\n labels?: Labels;\n}\n\nexport interface TimeSeriesMetadata {\n notices?: Notice[];\n\n /**\n * The raw query that is executed to generate this data.\n * Useful when needing to inspect the query that was executed\n * after variables and other context modifications have been applied.\n */\n executedQueryString?: string;\n}\n"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AA4BjC,WASC"}
@@ -1 +1 @@
1
- {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/model/time.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,QAAQ,EAAO,MAAM,UAAU,CAAC;AASzC,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7C,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,IAAI,CAAC;IACZ,GAAG,EAAE,IAAI,CAAC;CACX;AAED,MAAM,WAAW,iBAAiB;IAEhC,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,YAAY,EAAE,cAAc,CAAC;CAC9B;AAED,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;AAEnE;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,cAAc,GAAG,SAAS,IAAI,iBAAiB,CAE7F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,cAAc,GAAG,SAAS,IAAI,iBAAiB,CAE7F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,iBAAiB,GAAG,iBAAiB,CAOnF;AAED,KAAK,0BAA0B,GAAG,GAAG,MAAM,IAAI,CAAC;AAChD,KAAK,qBAAqB,GAAG,GAAG,MAAM,GAAG,CAAC;AAC1C,KAAK,qBAAqB,GAAG,GAAG,MAAM,GAAG,CAAC;AAC1C,KAAK,mBAAmB,GAAG,GAAG,MAAM,GAAG,CAAC;AACxC,KAAK,kBAAkB,GAAG,GAAG,MAAM,GAAG,CAAC;AACvC,KAAK,mBAAmB,GAAG,GAAG,MAAM,GAAG,CAAC;AACxC,KAAK,mBAAmB,GAAG,GAAG,MAAM,GAAG,CAAC;AAExC,MAAM,MAAM,cAAc,GAAG,OAAO,CAClC,GAAG,mBAAmB,GAAG,EAAE,GAAG,mBAAmB,GAAG,EAAE,GAAG,kBAAkB,GAAG,EAAE,GAAG,mBAAmB,GAAG,EAAE,GACvG,qBAAqB,GACrB,EAAE,GAAG,qBAAqB,GAAG,EAAE,GAAG,0BAA0B,GAAG,EAAE,EAAE,EACvE,EAAE,CACH,CAAC;AAEF,eAAO,MAAM,cAAc,QAAqF,CAAC;AAEjH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,QAAQ,CAepE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,IAAI,cAAc,CAGvF;AAED,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,iBAAiB,GAAG,QAAQ,CAGnF;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,CAqBrE;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc,CA4BjE;AAiED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,UAO/C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,UAI7E"}
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/model/time.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,QAAQ,EAAO,MAAM,UAAU,CAAC;AASzC,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7C,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,IAAI,CAAC;IACZ,GAAG,EAAE,IAAI,CAAC;CACX;AAED,MAAM,WAAW,iBAAiB;IAEhC,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,YAAY,EAAE,cAAc,CAAC;CAC9B;AAED,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;AAEnE;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,cAAc,GAAG,SAAS,IAAI,iBAAiB,CAE7F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,cAAc,GAAG,SAAS,IAAI,iBAAiB,CAE7F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,iBAAiB,GAAG,iBAAiB,CAOnF;AAED,KAAK,0BAA0B,GAAG,GAAG,MAAM,IAAI,CAAC;AAChD,KAAK,qBAAqB,GAAG,GAAG,MAAM,GAAG,CAAC;AAC1C,KAAK,qBAAqB,GAAG,GAAG,MAAM,GAAG,CAAC;AAC1C,KAAK,mBAAmB,GAAG,GAAG,MAAM,GAAG,CAAC;AACxC,KAAK,kBAAkB,GAAG,GAAG,MAAM,GAAG,CAAC;AACvC,KAAK,mBAAmB,GAAG,GAAG,MAAM,GAAG,CAAC;AACxC,KAAK,mBAAmB,GAAG,GAAG,MAAM,GAAG,CAAC;AAExC,MAAM,MAAM,cAAc,GAAG,OAAO,CAClC,GAAG,mBAAmB,GAAG,EAAE,GAAG,mBAAmB,GAAG,EAAE,GAAG,kBAAkB,GAAG,EAAE,GAAG,mBAAmB,GAAG,EAAE,GACvG,qBAAqB,GACrB,EAAE,GAAG,qBAAqB,GAAG,EAAE,GAAG,0BAA0B,GAAG,EAAE,EAAE,EACvE,EAAE,CACH,CAAC;AAEF,eAAO,MAAM,cAAc,QAAqF,CAAC;AAEjH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,QAAQ,CAepE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,IAAI,cAAc,CAGvF;AAED,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,iBAAiB,GAAG,QAAQ,CAGnF;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,CAqBrE;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc,CA4BjE;AAiED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOxD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAItF"}
@@ -1,4 +1,4 @@
1
- // Copyright 2023 The Perses Authors
1
+ // Copyright 2024 The Perses Authors
2
2
  // Licensed under the Apache License, Version 2.0 (the "License");
3
3
  // you may not use this file except in compliance with the License.
4
4
  // You may obtain a copy of the License at
@@ -30,8 +30,7 @@ const ONE_YEAR_IN_MS = 31536000000; // assuming a year has always 365d
30
30
  /**
31
31
  * Returns an absolute time range from a RelativeTimeRange.
32
32
  */ export function toAbsoluteTimeRange(timeRange) {
33
- var _timeRange_end;
34
- const end = (_timeRange_end = timeRange.end) !== null && _timeRange_end !== void 0 ? _timeRange_end : new Date();
33
+ const end = timeRange.end ?? new Date();
35
34
  return {
36
35
  start: sub(end, parseDurationString(timeRange.pastDuration)),
37
36
  end
@@ -46,15 +45,14 @@ export const DURATION_REGEX = /^(?:(\d+)y)?(?:(\d+)w)?(?:(\d+)d)?(?:(\d+)h)?(?:(
46
45
  if (matches === null) {
47
46
  throw new Error(`Invalid duration string '${durationString}'`);
48
47
  }
49
- var _matches_, _matches_1, _matches_2, _matches_3, _matches_4, _matches_5, _matches_6;
50
48
  return {
51
- years: parseInt((_matches_ = matches[1]) !== null && _matches_ !== void 0 ? _matches_ : '0'),
49
+ years: parseInt(matches[1] ?? '0'),
52
50
  months: 0,
53
- weeks: parseInt((_matches_1 = matches[2]) !== null && _matches_1 !== void 0 ? _matches_1 : '0'),
54
- days: parseInt((_matches_2 = matches[3]) !== null && _matches_2 !== void 0 ? _matches_2 : '0'),
55
- hours: parseInt((_matches_3 = matches[4]) !== null && _matches_3 !== void 0 ? _matches_3 : '0'),
56
- minutes: parseInt((_matches_4 = matches[5]) !== null && _matches_4 !== void 0 ? _matches_4 : '0'),
57
- seconds: parseInt((_matches_5 = matches[6]) !== null && _matches_5 !== void 0 ? _matches_5 : '0') + parseInt((_matches_6 = matches[7]) !== null && _matches_6 !== void 0 ? _matches_6 : '0') / 1000
51
+ weeks: parseInt(matches[2] ?? '0'),
52
+ days: parseInt(matches[3] ?? '0'),
53
+ hours: parseInt(matches[4] ?? '0'),
54
+ minutes: parseInt(matches[5] ?? '0'),
55
+ seconds: parseInt(matches[6] ?? '0') + parseInt(matches[7] ?? '0') / 1000
58
56
  };
59
57
  }
60
58
  /**
@@ -110,7 +108,7 @@ export function formatDuration(duration) {
110
108
  if (seconds) {
111
109
  result.push(`${seconds}s`);
112
110
  }
113
- const ms = (duration.seconds - seconds) * 1000;
111
+ const ms = Math.round((duration.seconds - seconds) * 1000);
114
112
  if (ms) {
115
113
  result.push(`${ms}ms`);
116
114
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/model/time.ts"],"sourcesContent":["// Copyright 2023 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 { Duration, sub } from 'date-fns';\n\nconst ONE_SECOND_IN_MS = 1000;\nconst ONE_MINUTE_IN_MS = 60000;\nconst ONE_HOUR_IN_MS = 3600000;\nconst ONE_DAY_IN_MS = 86400000; // assuming a day has always 24h\nconst ONE_WEEK_IN_MS = 604800000; // assuming a week has always 7d\nconst ONE_YEAR_IN_MS = 31536000000; // assuming a year has always 365d\n\nexport type UnixTimeMs = number;\n\nexport type DateTimeFormat = number | string;\n\nexport interface AbsoluteTimeRange {\n start: Date;\n end: Date;\n}\n\nexport interface RelativeTimeRange {\n // End date or undefined if relative to the current Date\n end?: Date;\n pastDuration: DurationString;\n}\n\nexport type TimeRangeValue = AbsoluteTimeRange | RelativeTimeRange;\n\n/**\n * Determine whether a given time range is relative\n */\nexport function isRelativeTimeRange(timeRange: TimeRangeValue): timeRange is RelativeTimeRange {\n return (timeRange as RelativeTimeRange).pastDuration !== undefined;\n}\n\n/**\n * Determine whether a given time range is absolute\n */\nexport function isAbsoluteTimeRange(timeRange: TimeRangeValue): timeRange is AbsoluteTimeRange {\n return (timeRange as AbsoluteTimeRange).start !== undefined && (timeRange as AbsoluteTimeRange).end !== undefined;\n}\n\n/**\n * Returns an absolute time range from a RelativeTimeRange.\n */\nexport function toAbsoluteTimeRange(timeRange: RelativeTimeRange): AbsoluteTimeRange {\n const end = timeRange.end ?? new Date();\n\n return {\n start: sub(end, parseDurationString(timeRange.pastDuration)),\n end,\n };\n}\n\ntype MillisecondsDurationString = `${number}ms`;\ntype SecondsDurationString = `${number}s`;\ntype MinutesDurationString = `${number}m`;\ntype HoursDurationString = `${number}h`;\ntype DaysDurationString = `${number}d`;\ntype WeeksDurationString = `${number}w`;\ntype YearsDurationString = `${number}y`;\n\nexport type DurationString = Exclude<\n `${YearsDurationString | ''}${WeeksDurationString | ''}${DaysDurationString | ''}${HoursDurationString | ''}${\n | MinutesDurationString\n | ''}${SecondsDurationString | ''}${MillisecondsDurationString | ''}`,\n ''\n>;\n\nexport const DURATION_REGEX = /^(?:(\\d+)y)?(?:(\\d+)w)?(?:(\\d+)d)?(?:(\\d+)h)?(?:(\\d+)m)?(?:(\\d+)s)?(?:(\\d+)ms)?$/;\n\n/**\n * Parses a DurationString into a Duration object with numeric values that can\n * be used to do Date math. Throws if not a valid duration string.\n */\nexport function parseDurationString(durationString: string): Duration {\n const matches = DURATION_REGEX.exec(durationString);\n if (matches === null) {\n throw new Error(`Invalid duration string '${durationString}'`);\n }\n\n return {\n years: parseInt(matches[1] ?? '0'),\n months: 0,\n weeks: parseInt(matches[2] ?? '0'),\n days: parseInt(matches[3] ?? '0'),\n hours: parseInt(matches[4] ?? '0'),\n minutes: parseInt(matches[5] ?? '0'),\n seconds: parseInt(matches[6] ?? '0') + parseInt(matches[7] ?? '0') / 1000,\n };\n}\n\n/**\n * Returns true if the given string is a valid DurationString.\n */\nexport function isDurationString(maybeDuration: string): maybeDuration is DurationString {\n if (maybeDuration === '') return false;\n return DURATION_REGEX.test(maybeDuration);\n}\n\nexport function intervalToPrometheusDuration(timeRange: AbsoluteTimeRange): Duration {\n const durationInMs = timeRange.end.valueOf() - timeRange.start.valueOf();\n return msToPrometheusDuration(durationInMs);\n}\n\nexport function msToPrometheusDuration(durationInMs: number): Duration {\n const years = Math.trunc(durationInMs / ONE_YEAR_IN_MS);\n if (years > 0) durationInMs -= years * ONE_YEAR_IN_MS;\n const weeks = Math.trunc(durationInMs / ONE_WEEK_IN_MS);\n if (weeks > 0) durationInMs -= weeks * ONE_WEEK_IN_MS;\n const days = Math.trunc(durationInMs / ONE_DAY_IN_MS);\n if (days > 0) durationInMs -= days * ONE_DAY_IN_MS;\n const hours = Math.trunc(durationInMs / ONE_HOUR_IN_MS);\n if (hours > 0) durationInMs -= hours * ONE_HOUR_IN_MS;\n const minutes = Math.trunc(durationInMs / ONE_MINUTE_IN_MS);\n if (minutes > 0) durationInMs -= minutes * ONE_MINUTE_IN_MS;\n\n return {\n years: years,\n months: 0,\n weeks: weeks,\n days: days,\n hours: hours,\n minutes: minutes,\n seconds: durationInMs / 1000,\n };\n}\n\nexport function formatDuration(duration: Duration): DurationString {\n const result: string[] = [];\n if (duration.years) {\n result.push(`${duration.years}y`);\n }\n if (duration.weeks) {\n result.push(`${duration.weeks}w`);\n }\n if (duration.days) {\n result.push(`${duration.days}d`);\n }\n if (duration.hours) {\n result.push(`${duration.hours}h`);\n }\n if (duration.minutes) {\n result.push(`${duration.minutes}m`);\n }\n if (duration.seconds) {\n const seconds = Math.trunc(duration.seconds);\n if (seconds) {\n result.push(`${seconds}s`);\n }\n const ms = (duration.seconds - seconds) * 1000;\n if (ms) {\n result.push(`${ms}ms`);\n }\n }\n return result.join('') as DurationString;\n}\n\nconst DEFAULT_STEP_MS = 15000;\n\nconst ROUNDED_STEP_INTERVALS = [\n // max: 0.015s\n { maxMs: 15, roundedStepMs: 10, display: '0.01s' },\n // max: 0.035s\n { maxMs: 35, roundedStepMs: 20, display: '0.02s' },\n // max: 0.075s\n { maxMs: 75, roundedStepMs: 50, display: '0.05s' },\n // max: 0.15s\n { maxMs: 150, roundedStepMs: 100, display: '0.1s' },\n // max: 0.35s\n { maxMs: 350, roundedStepMs: 200, display: '0.2s' },\n // max: 0.75s\n { maxMs: 750, roundedStepMs: 500, display: '0.5s' },\n // max: 1.5s\n { maxMs: ONE_SECOND_IN_MS * 1.5, roundedStepMs: ONE_SECOND_IN_MS, display: '1s' },\n // max: 3.5s\n { maxMs: ONE_SECOND_IN_MS * 3.5, roundedStepMs: ONE_SECOND_IN_MS * 2, display: '2s' },\n // max: 7.5s\n { maxMs: ONE_SECOND_IN_MS * 7.5, roundedStepMs: ONE_SECOND_IN_MS * 5, display: '5s' },\n // max: 12.5s\n { maxMs: ONE_SECOND_IN_MS * 12.5, roundedStepMs: ONE_SECOND_IN_MS * 10, display: '10s' },\n // max: 17.5s\n { maxMs: ONE_SECOND_IN_MS * 17.5, roundedStepMs: ONE_SECOND_IN_MS * 15, display: '15s' },\n // max: 25s\n { maxMs: ONE_SECOND_IN_MS * 25, roundedStepMs: ONE_SECOND_IN_MS * 20, display: '20s' },\n // max: 45s\n { maxMs: ONE_SECOND_IN_MS * 45, roundedStepMs: ONE_SECOND_IN_MS * 30, display: '30s' },\n // max: 1.5m\n { maxMs: ONE_MINUTE_IN_MS * 1.5, roundedStepMs: ONE_MINUTE_IN_MS, display: '1m' },\n // max: 3.5m\n { maxMs: ONE_MINUTE_IN_MS * 3.5, roundedStepMs: ONE_MINUTE_IN_MS * 2, display: '2m' },\n // max: 7.5m\n { maxMs: ONE_MINUTE_IN_MS * 7.5, roundedStepMs: ONE_MINUTE_IN_MS * 5, display: '5m' },\n // max: 12.5m\n { maxMs: ONE_MINUTE_IN_MS * 12.5, roundedStepMs: ONE_MINUTE_IN_MS * 10, display: '10m' },\n // max: 12.5m\n { maxMs: ONE_MINUTE_IN_MS * 12.5, roundedStepMs: ONE_MINUTE_IN_MS * 15, display: '15m' },\n // max: 25m\n { maxMs: ONE_MINUTE_IN_MS * 25, roundedStepMs: ONE_MINUTE_IN_MS * 20, display: '20m' },\n // max: 45m\n { maxMs: ONE_MINUTE_IN_MS * 45, roundedStepMs: ONE_MINUTE_IN_MS * 30, display: '30m' },\n // max: 1.5h\n { maxMs: ONE_HOUR_IN_MS * 1.5, roundedStepMs: ONE_HOUR_IN_MS, display: '1h' },\n // max: 2.5h\n { maxMs: ONE_HOUR_IN_MS * 2.5, roundedStepMs: ONE_HOUR_IN_MS * 2, display: '2h' },\n // max: 4.5h\n { maxMs: ONE_HOUR_IN_MS * 4.5, roundedStepMs: ONE_HOUR_IN_MS * 3, display: '3h' },\n // max: 9h\n { maxMs: ONE_HOUR_IN_MS * 9, roundedStepMs: ONE_HOUR_IN_MS * 6, display: '6h' },\n // max: 1d\n { maxMs: ONE_DAY_IN_MS, roundedStepMs: ONE_HOUR_IN_MS * 12, display: '12h' },\n // max: 1w\n { maxMs: ONE_WEEK_IN_MS, roundedStepMs: ONE_DAY_IN_MS, display: '1d' },\n // max: 3w\n { maxMs: ONE_WEEK_IN_MS * 3, roundedStepMs: ONE_WEEK_IN_MS, display: '1w' },\n // max: 6w\n { maxMs: ONE_WEEK_IN_MS * 6, roundedStepMs: ONE_DAY_IN_MS * 30, display: '30d' },\n // max: 2y\n { maxMs: ONE_YEAR_IN_MS * 2, roundedStepMs: ONE_YEAR_IN_MS, display: '1y' },\n];\n\n/**\n * Round interval to clearer increments\n */\nexport function roundStepInterval(stepMs: number) {\n for (const { maxMs, roundedStepMs } of ROUNDED_STEP_INTERVALS) {\n if (stepMs < maxMs) {\n return roundedStepMs;\n }\n }\n return DEFAULT_STEP_MS;\n}\n\n/**\n * Gets a suggested step/interval size for a time range based on the width of a visual component.\n */\nexport function getSuggestedStepMs(timeRange: AbsoluteTimeRange, width: number) {\n const queryRangeMs = timeRange.end.valueOf() - timeRange.start.valueOf();\n const stepMs = Math.floor(queryRangeMs / width);\n return roundStepInterval(stepMs);\n}\n"],"names":["sub","ONE_SECOND_IN_MS","ONE_MINUTE_IN_MS","ONE_HOUR_IN_MS","ONE_DAY_IN_MS","ONE_WEEK_IN_MS","ONE_YEAR_IN_MS","isRelativeTimeRange","timeRange","pastDuration","undefined","isAbsoluteTimeRange","start","end","toAbsoluteTimeRange","Date","parseDurationString","DURATION_REGEX","durationString","matches","exec","Error","years","parseInt","months","weeks","days","hours","minutes","seconds","isDurationString","maybeDuration","test","intervalToPrometheusDuration","durationInMs","valueOf","msToPrometheusDuration","Math","trunc","formatDuration","duration","result","push","ms","join","DEFAULT_STEP_MS","ROUNDED_STEP_INTERVALS","maxMs","roundedStepMs","display","roundStepInterval","stepMs","getSuggestedStepMs","width","queryRangeMs","floor"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/model/time.ts"],"sourcesContent":["// Copyright 2024 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 { Duration, sub } from 'date-fns';\n\nconst ONE_SECOND_IN_MS = 1000;\nconst ONE_MINUTE_IN_MS = 60000;\nconst ONE_HOUR_IN_MS = 3600000;\nconst ONE_DAY_IN_MS = 86400000; // assuming a day has always 24h\nconst ONE_WEEK_IN_MS = 604800000; // assuming a week has always 7d\nconst ONE_YEAR_IN_MS = 31536000000; // assuming a year has always 365d\n\nexport type UnixTimeMs = number;\n\nexport type DateTimeFormat = number | string;\n\nexport interface AbsoluteTimeRange {\n start: Date;\n end: Date;\n}\n\nexport interface RelativeTimeRange {\n // End date or undefined if relative to the current Date\n end?: Date;\n pastDuration: DurationString;\n}\n\nexport type TimeRangeValue = AbsoluteTimeRange | RelativeTimeRange;\n\n/**\n * Determine whether a given time range is relative\n */\nexport function isRelativeTimeRange(timeRange: TimeRangeValue): timeRange is RelativeTimeRange {\n return (timeRange as RelativeTimeRange).pastDuration !== undefined;\n}\n\n/**\n * Determine whether a given time range is absolute\n */\nexport function isAbsoluteTimeRange(timeRange: TimeRangeValue): timeRange is AbsoluteTimeRange {\n return (timeRange as AbsoluteTimeRange).start !== undefined && (timeRange as AbsoluteTimeRange).end !== undefined;\n}\n\n/**\n * Returns an absolute time range from a RelativeTimeRange.\n */\nexport function toAbsoluteTimeRange(timeRange: RelativeTimeRange): AbsoluteTimeRange {\n const end = timeRange.end ?? new Date();\n\n return {\n start: sub(end, parseDurationString(timeRange.pastDuration)),\n end,\n };\n}\n\ntype MillisecondsDurationString = `${number}ms`;\ntype SecondsDurationString = `${number}s`;\ntype MinutesDurationString = `${number}m`;\ntype HoursDurationString = `${number}h`;\ntype DaysDurationString = `${number}d`;\ntype WeeksDurationString = `${number}w`;\ntype YearsDurationString = `${number}y`;\n\nexport type DurationString = Exclude<\n `${YearsDurationString | ''}${WeeksDurationString | ''}${DaysDurationString | ''}${HoursDurationString | ''}${\n | MinutesDurationString\n | ''}${SecondsDurationString | ''}${MillisecondsDurationString | ''}`,\n ''\n>;\n\nexport const DURATION_REGEX = /^(?:(\\d+)y)?(?:(\\d+)w)?(?:(\\d+)d)?(?:(\\d+)h)?(?:(\\d+)m)?(?:(\\d+)s)?(?:(\\d+)ms)?$/;\n\n/**\n * Parses a DurationString into a Duration object with numeric values that can\n * be used to do Date math. Throws if not a valid duration string.\n */\nexport function parseDurationString(durationString: string): Duration {\n const matches = DURATION_REGEX.exec(durationString);\n if (matches === null) {\n throw new Error(`Invalid duration string '${durationString}'`);\n }\n\n return {\n years: parseInt(matches[1] ?? '0'),\n months: 0,\n weeks: parseInt(matches[2] ?? '0'),\n days: parseInt(matches[3] ?? '0'),\n hours: parseInt(matches[4] ?? '0'),\n minutes: parseInt(matches[5] ?? '0'),\n seconds: parseInt(matches[6] ?? '0') + parseInt(matches[7] ?? '0') / 1000,\n };\n}\n\n/**\n * Returns true if the given string is a valid DurationString.\n */\nexport function isDurationString(maybeDuration: string): maybeDuration is DurationString {\n if (maybeDuration === '') return false;\n return DURATION_REGEX.test(maybeDuration);\n}\n\nexport function intervalToPrometheusDuration(timeRange: AbsoluteTimeRange): Duration {\n const durationInMs = timeRange.end.valueOf() - timeRange.start.valueOf();\n return msToPrometheusDuration(durationInMs);\n}\n\nexport function msToPrometheusDuration(durationInMs: number): Duration {\n const years = Math.trunc(durationInMs / ONE_YEAR_IN_MS);\n if (years > 0) durationInMs -= years * ONE_YEAR_IN_MS;\n const weeks = Math.trunc(durationInMs / ONE_WEEK_IN_MS);\n if (weeks > 0) durationInMs -= weeks * ONE_WEEK_IN_MS;\n const days = Math.trunc(durationInMs / ONE_DAY_IN_MS);\n if (days > 0) durationInMs -= days * ONE_DAY_IN_MS;\n const hours = Math.trunc(durationInMs / ONE_HOUR_IN_MS);\n if (hours > 0) durationInMs -= hours * ONE_HOUR_IN_MS;\n const minutes = Math.trunc(durationInMs / ONE_MINUTE_IN_MS);\n if (minutes > 0) durationInMs -= minutes * ONE_MINUTE_IN_MS;\n\n return {\n years: years,\n months: 0,\n weeks: weeks,\n days: days,\n hours: hours,\n minutes: minutes,\n seconds: durationInMs / 1000,\n };\n}\n\nexport function formatDuration(duration: Duration): DurationString {\n const result: string[] = [];\n if (duration.years) {\n result.push(`${duration.years}y`);\n }\n if (duration.weeks) {\n result.push(`${duration.weeks}w`);\n }\n if (duration.days) {\n result.push(`${duration.days}d`);\n }\n if (duration.hours) {\n result.push(`${duration.hours}h`);\n }\n if (duration.minutes) {\n result.push(`${duration.minutes}m`);\n }\n if (duration.seconds) {\n const seconds = Math.trunc(duration.seconds);\n if (seconds) {\n result.push(`${seconds}s`);\n }\n const ms = Math.round((duration.seconds - seconds) * 1000);\n if (ms) {\n result.push(`${ms}ms`);\n }\n }\n return result.join('') as DurationString;\n}\n\nconst DEFAULT_STEP_MS = 15000;\n\nconst ROUNDED_STEP_INTERVALS = [\n // max: 0.015s\n { maxMs: 15, roundedStepMs: 10, display: '0.01s' },\n // max: 0.035s\n { maxMs: 35, roundedStepMs: 20, display: '0.02s' },\n // max: 0.075s\n { maxMs: 75, roundedStepMs: 50, display: '0.05s' },\n // max: 0.15s\n { maxMs: 150, roundedStepMs: 100, display: '0.1s' },\n // max: 0.35s\n { maxMs: 350, roundedStepMs: 200, display: '0.2s' },\n // max: 0.75s\n { maxMs: 750, roundedStepMs: 500, display: '0.5s' },\n // max: 1.5s\n { maxMs: ONE_SECOND_IN_MS * 1.5, roundedStepMs: ONE_SECOND_IN_MS, display: '1s' },\n // max: 3.5s\n { maxMs: ONE_SECOND_IN_MS * 3.5, roundedStepMs: ONE_SECOND_IN_MS * 2, display: '2s' },\n // max: 7.5s\n { maxMs: ONE_SECOND_IN_MS * 7.5, roundedStepMs: ONE_SECOND_IN_MS * 5, display: '5s' },\n // max: 12.5s\n { maxMs: ONE_SECOND_IN_MS * 12.5, roundedStepMs: ONE_SECOND_IN_MS * 10, display: '10s' },\n // max: 17.5s\n { maxMs: ONE_SECOND_IN_MS * 17.5, roundedStepMs: ONE_SECOND_IN_MS * 15, display: '15s' },\n // max: 25s\n { maxMs: ONE_SECOND_IN_MS * 25, roundedStepMs: ONE_SECOND_IN_MS * 20, display: '20s' },\n // max: 45s\n { maxMs: ONE_SECOND_IN_MS * 45, roundedStepMs: ONE_SECOND_IN_MS * 30, display: '30s' },\n // max: 1.5m\n { maxMs: ONE_MINUTE_IN_MS * 1.5, roundedStepMs: ONE_MINUTE_IN_MS, display: '1m' },\n // max: 3.5m\n { maxMs: ONE_MINUTE_IN_MS * 3.5, roundedStepMs: ONE_MINUTE_IN_MS * 2, display: '2m' },\n // max: 7.5m\n { maxMs: ONE_MINUTE_IN_MS * 7.5, roundedStepMs: ONE_MINUTE_IN_MS * 5, display: '5m' },\n // max: 12.5m\n { maxMs: ONE_MINUTE_IN_MS * 12.5, roundedStepMs: ONE_MINUTE_IN_MS * 10, display: '10m' },\n // max: 12.5m\n { maxMs: ONE_MINUTE_IN_MS * 12.5, roundedStepMs: ONE_MINUTE_IN_MS * 15, display: '15m' },\n // max: 25m\n { maxMs: ONE_MINUTE_IN_MS * 25, roundedStepMs: ONE_MINUTE_IN_MS * 20, display: '20m' },\n // max: 45m\n { maxMs: ONE_MINUTE_IN_MS * 45, roundedStepMs: ONE_MINUTE_IN_MS * 30, display: '30m' },\n // max: 1.5h\n { maxMs: ONE_HOUR_IN_MS * 1.5, roundedStepMs: ONE_HOUR_IN_MS, display: '1h' },\n // max: 2.5h\n { maxMs: ONE_HOUR_IN_MS * 2.5, roundedStepMs: ONE_HOUR_IN_MS * 2, display: '2h' },\n // max: 4.5h\n { maxMs: ONE_HOUR_IN_MS * 4.5, roundedStepMs: ONE_HOUR_IN_MS * 3, display: '3h' },\n // max: 9h\n { maxMs: ONE_HOUR_IN_MS * 9, roundedStepMs: ONE_HOUR_IN_MS * 6, display: '6h' },\n // max: 1d\n { maxMs: ONE_DAY_IN_MS, roundedStepMs: ONE_HOUR_IN_MS * 12, display: '12h' },\n // max: 1w\n { maxMs: ONE_WEEK_IN_MS, roundedStepMs: ONE_DAY_IN_MS, display: '1d' },\n // max: 3w\n { maxMs: ONE_WEEK_IN_MS * 3, roundedStepMs: ONE_WEEK_IN_MS, display: '1w' },\n // max: 6w\n { maxMs: ONE_WEEK_IN_MS * 6, roundedStepMs: ONE_DAY_IN_MS * 30, display: '30d' },\n // max: 2y\n { maxMs: ONE_YEAR_IN_MS * 2, roundedStepMs: ONE_YEAR_IN_MS, display: '1y' },\n];\n\n/**\n * Round interval to clearer increments\n */\nexport function roundStepInterval(stepMs: number): number {\n for (const { maxMs, roundedStepMs } of ROUNDED_STEP_INTERVALS) {\n if (stepMs < maxMs) {\n return roundedStepMs;\n }\n }\n return DEFAULT_STEP_MS;\n}\n\n/**\n * Gets a suggested step/interval size for a time range based on the width of a visual component.\n */\nexport function getSuggestedStepMs(timeRange: AbsoluteTimeRange, width: number): number {\n const queryRangeMs = timeRange.end.valueOf() - timeRange.start.valueOf();\n const stepMs = Math.floor(queryRangeMs / width);\n return roundStepInterval(stepMs);\n}\n"],"names":["sub","ONE_SECOND_IN_MS","ONE_MINUTE_IN_MS","ONE_HOUR_IN_MS","ONE_DAY_IN_MS","ONE_WEEK_IN_MS","ONE_YEAR_IN_MS","isRelativeTimeRange","timeRange","pastDuration","undefined","isAbsoluteTimeRange","start","end","toAbsoluteTimeRange","Date","parseDurationString","DURATION_REGEX","durationString","matches","exec","Error","years","parseInt","months","weeks","days","hours","minutes","seconds","isDurationString","maybeDuration","test","intervalToPrometheusDuration","durationInMs","valueOf","msToPrometheusDuration","Math","trunc","formatDuration","duration","result","push","ms","round","join","DEFAULT_STEP_MS","ROUNDED_STEP_INTERVALS","maxMs","roundedStepMs","display","roundStepInterval","stepMs","getSuggestedStepMs","width","queryRangeMs","floor"],"mappings":"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"}
@@ -1,20 +1,93 @@
1
- export interface TraceMetaData {
2
- executedQueryString?: string;
1
+ /**
2
+ * Common types
3
+ */
4
+ export interface TraceAttribute {
5
+ key: string;
6
+ value: TraceAttributeValue;
7
+ }
8
+ export type TraceAttributeValue = {
9
+ stringValue: string;
10
+ } | {
11
+ intValue: string;
12
+ } | {
13
+ boolValue: boolean;
14
+ } | {
15
+ arrayValue: {
16
+ values: TraceAttributeValue[];
17
+ };
18
+ };
19
+ /**
20
+ * An entire trace
21
+ */
22
+ export interface Trace {
23
+ rootSpan: Span;
24
+ }
25
+ export interface TraceResource {
26
+ serviceName: string;
27
+ attributes: TraceAttribute[];
3
28
  }
4
- export interface TraceValue {
29
+ export interface TraceScope {
30
+ name: string;
31
+ }
32
+ export interface Span {
33
+ resource: TraceResource;
34
+ scope: TraceScope;
35
+ parentSpan?: Span;
36
+ /** child spans, sorted by startTime */
37
+ childSpans: Span[];
38
+ traceId: string;
39
+ spanId: string;
40
+ parentSpanId?: string;
41
+ name: string;
42
+ kind: string;
43
+ startTimeUnixMs: number;
44
+ endTimeUnixMs: number;
45
+ attributes: TraceAttribute[];
46
+ events: SpanEvent[];
47
+ status?: SpanStatus;
48
+ }
49
+ export interface SpanEvent {
50
+ timeUnixMs: number;
51
+ name: string;
52
+ attributes: TraceAttribute[];
53
+ }
54
+ export interface SpanStatus {
55
+ code?: typeof SpanStatusUnset | typeof SpanStatusOk | typeof SpanStatusError;
56
+ message?: string;
57
+ }
58
+ export declare const SpanStatusUnset = "STATUS_CODE_UNSET";
59
+ export declare const SpanStatusOk = "STATUS_CODE_OK";
60
+ export declare const SpanStatusError = "STATUS_CODE_ERROR";
61
+ /**
62
+ * Partial trace information returned by search endpoint
63
+ */
64
+ export interface TraceSearchResult {
65
+ traceId: string;
66
+ rootServiceName: string;
67
+ rootTraceName: string;
5
68
  startTimeUnixMs: number;
6
69
  durationMs: number;
7
- spanCount?: number;
70
+ serviceStats: Record<string, ServiceStats>;
71
+ }
72
+ export interface ServiceStats {
73
+ spanCount: number;
74
+ /** number of spans with errors, unset if zero */
8
75
  errorCount?: number;
9
- traceId?: string;
10
- name?: string;
11
76
  }
12
77
  /**
13
78
  * A generalized data-model that will be used by Panel components
14
79
  * to display traces.
80
+ *
81
+ * If the query contains a valid trace ID, the 'trace' attribute will contain the entire trace.
82
+ * If the query contains a TraceQL query, the 'searchResult' attribute will contain the search results.
15
83
  */
16
84
  export interface TraceData {
17
- traces: TraceValue[];
85
+ trace?: Trace;
86
+ searchResult?: TraceSearchResult[];
18
87
  metadata?: TraceMetaData;
19
88
  }
89
+ export interface TraceMetaData {
90
+ executedQueryString?: string;
91
+ }
92
+ export declare function isValidTraceId(traceId: string): boolean;
20
93
  //# sourceMappingURL=trace-data.d.ts.map