@perses-dev/plugin-system 0.8.0 → 0.9.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.
Files changed (149) hide show
  1. package/dist/cjs/components/PluginRegistry/PluginRegistry.js +43 -29
  2. package/dist/cjs/components/PluginRegistry/PluginRegistry.test.js +114 -38
  3. package/dist/cjs/components/PluginRegistry/index.js +17 -18
  4. package/dist/cjs/components/PluginRegistry/plugin-indexes.js +23 -20
  5. package/dist/cjs/components/PluginRegistry/plugin-registry-model.js +17 -7
  6. package/dist/cjs/components/PluginRegistry/test-plugins/bert/index.js +22 -12
  7. package/dist/cjs/components/PluginRegistry/test-plugins/ernie/index.js +20 -8
  8. package/dist/cjs/components/PluginRegistry/test-plugins/index.js +59 -39
  9. package/dist/cjs/components/index.js +17 -20
  10. package/dist/cjs/index.js +19 -20
  11. package/dist/cjs/model/datasource.js +16 -0
  12. package/dist/cjs/model/index.js +21 -21
  13. package/dist/cjs/model/panels.js +4 -21
  14. package/dist/cjs/model/plugins.js +4 -7
  15. package/dist/cjs/model/time-series-queries.js +16 -0
  16. package/dist/cjs/model/variables.js +5 -17
  17. package/dist/cjs/model/visual-editing.js +10 -2
  18. package/dist/cjs/runtime/datasources.js +20 -13
  19. package/dist/cjs/runtime/index.js +22 -21
  20. package/dist/cjs/runtime/plugins.js +25 -22
  21. package/dist/cjs/runtime/query-string.js +17 -10
  22. package/dist/cjs/runtime/template-variables.js +34 -16
  23. package/dist/cjs/runtime/time-range.js +17 -10
  24. package/dist/cjs/runtime/time-series-queries.js +58 -0
  25. package/dist/cjs/test/render.js +32 -13
  26. package/dist/cjs/test/setup-tests.js +4 -10
  27. package/dist/cjs/utils/cache-keys.js +8 -7
  28. package/dist/components/PluginRegistry/PluginRegistry.js +81 -1
  29. package/dist/components/PluginRegistry/PluginRegistry.js.map +1 -0
  30. package/dist/components/PluginRegistry/PluginRegistry.test.js +142 -1
  31. package/dist/components/PluginRegistry/PluginRegistry.test.js.map +1 -0
  32. package/dist/components/PluginRegistry/index.js +16 -1
  33. package/dist/components/PluginRegistry/index.js.map +1 -0
  34. package/dist/components/PluginRegistry/plugin-indexes.js +66 -1
  35. package/dist/components/PluginRegistry/plugin-indexes.js.map +1 -0
  36. package/dist/components/PluginRegistry/plugin-registry-model.d.ts +1 -2
  37. package/dist/components/PluginRegistry/plugin-registry-model.d.ts.map +1 -1
  38. package/dist/components/PluginRegistry/plugin-registry-model.js +23 -1
  39. package/dist/components/PluginRegistry/plugin-registry-model.js.map +1 -0
  40. package/dist/components/PluginRegistry/test-plugins/bert/index.js +25 -1
  41. package/dist/components/PluginRegistry/test-plugins/bert/index.js.map +1 -0
  42. package/dist/components/PluginRegistry/test-plugins/ernie/index.d.ts.map +1 -1
  43. package/dist/components/PluginRegistry/test-plugins/ernie/index.js +30 -1
  44. package/dist/components/PluginRegistry/test-plugins/ernie/index.js.map +1 -0
  45. package/dist/components/PluginRegistry/test-plugins/index.js +35 -1
  46. package/dist/components/PluginRegistry/test-plugins/index.js.map +1 -0
  47. package/dist/components/index.d.ts +1 -3
  48. package/dist/components/index.d.ts.map +1 -1
  49. package/dist/components/index.js +15 -1
  50. package/dist/components/index.js.map +1 -0
  51. package/dist/index.js +17 -1
  52. package/dist/index.js.map +1 -0
  53. package/dist/model/datasource.d.ts +9 -0
  54. package/dist/model/datasource.d.ts.map +1 -0
  55. package/dist/model/datasource.js +15 -0
  56. package/dist/model/datasource.js.map +1 -0
  57. package/dist/model/index.d.ts +2 -1
  58. package/dist/model/index.d.ts.map +1 -1
  59. package/dist/model/index.js +20 -1
  60. package/dist/model/index.js.map +1 -0
  61. package/dist/model/panels.d.ts +7 -11
  62. package/dist/model/panels.d.ts.map +1 -1
  63. package/dist/model/panels.js +15 -1
  64. package/dist/model/panels.js.map +1 -0
  65. package/dist/model/plugins.d.ts +16 -25
  66. package/dist/model/plugins.d.ts.map +1 -1
  67. package/dist/model/plugins.js +15 -1
  68. package/dist/model/plugins.js.map +1 -0
  69. package/dist/model/time-series-queries.d.ts +28 -0
  70. package/dist/model/time-series-queries.d.ts.map +1 -0
  71. package/dist/model/time-series-queries.js +15 -0
  72. package/dist/model/time-series-queries.js.map +1 -0
  73. package/dist/model/variables.d.ts +16 -11
  74. package/dist/model/variables.d.ts.map +1 -1
  75. package/dist/model/variables.js +15 -1
  76. package/dist/model/variables.js.map +1 -0
  77. package/dist/model/visual-editing.d.ts +5 -6
  78. package/dist/model/visual-editing.d.ts.map +1 -1
  79. package/dist/model/visual-editing.js +15 -1
  80. package/dist/model/visual-editing.js.map +1 -0
  81. package/dist/runtime/datasources.d.ts +5 -9
  82. package/dist/runtime/datasources.d.ts.map +1 -1
  83. package/dist/runtime/datasources.js +23 -1
  84. package/dist/runtime/datasources.js.map +1 -0
  85. package/dist/runtime/index.d.ts +3 -1
  86. package/dist/runtime/index.d.ts.map +1 -1
  87. package/dist/runtime/index.js +20 -1
  88. package/dist/runtime/index.js.map +1 -0
  89. package/dist/runtime/plugins.d.ts +5 -14
  90. package/dist/runtime/plugins.d.ts.map +1 -1
  91. package/dist/runtime/plugins.js +33 -1
  92. package/dist/runtime/plugins.js.map +1 -0
  93. package/dist/runtime/query-string.js +25 -1
  94. package/dist/runtime/query-string.js.map +1 -0
  95. package/dist/runtime/template-variables.d.ts +10 -1
  96. package/dist/runtime/template-variables.d.ts.map +1 -1
  97. package/dist/runtime/template-variables.js +44 -1
  98. package/dist/runtime/template-variables.js.map +1 -0
  99. package/dist/runtime/time-range.js +25 -1
  100. package/dist/runtime/time-range.js.map +1 -0
  101. package/dist/runtime/time-series-queries.d.ts +14 -0
  102. package/dist/runtime/time-series-queries.d.ts.map +1 -0
  103. package/dist/runtime/time-series-queries.js +54 -0
  104. package/dist/runtime/time-series-queries.js.map +1 -0
  105. package/dist/test/render.d.ts.map +1 -1
  106. package/dist/test/render.js +42 -1
  107. package/dist/test/render.js.map +1 -0
  108. package/dist/test/setup-tests.d.ts.map +1 -1
  109. package/dist/test/setup-tests.js +16 -1
  110. package/dist/test/setup-tests.js.map +1 -0
  111. package/dist/utils/cache-keys.js +19 -1
  112. package/dist/utils/cache-keys.js.map +1 -0
  113. package/package.json +11 -8
  114. package/dist/cjs/components/PluginBoundary.js +0 -14
  115. package/dist/cjs/components/PluginLoadingBoundary/PluginLoader.js +0 -39
  116. package/dist/cjs/components/PluginLoadingBoundary/PluginLoadingBoundary.js +0 -85
  117. package/dist/cjs/components/PluginLoadingBoundary/index.js +0 -29
  118. package/dist/cjs/components/PluginRegistry/legacy/PluginRegistry.js +0 -57
  119. package/dist/cjs/components/PluginRegistry/legacy/index.js +0 -29
  120. package/dist/cjs/components/PluginRegistry/legacy/registry-state.js +0 -97
  121. package/dist/cjs/components/PluginRegistry/test-plugins/bert/plugin.json +0 -32
  122. package/dist/cjs/components/PluginRegistry/test-plugins/ernie/plugin.json +0 -24
  123. package/dist/cjs/model/graph-queries.js +0 -28
  124. package/dist/components/PluginBoundary.d.ts +0 -13
  125. package/dist/components/PluginBoundary.d.ts.map +0 -1
  126. package/dist/components/PluginBoundary.js +0 -1
  127. package/dist/components/PluginLoadingBoundary/PluginLoader.d.ts +0 -11
  128. package/dist/components/PluginLoadingBoundary/PluginLoader.d.ts.map +0 -1
  129. package/dist/components/PluginLoadingBoundary/PluginLoader.js +0 -1
  130. package/dist/components/PluginLoadingBoundary/PluginLoadingBoundary.d.ts +0 -27
  131. package/dist/components/PluginLoadingBoundary/PluginLoadingBoundary.d.ts.map +0 -1
  132. package/dist/components/PluginLoadingBoundary/PluginLoadingBoundary.js +0 -1
  133. package/dist/components/PluginLoadingBoundary/index.d.ts +0 -2
  134. package/dist/components/PluginLoadingBoundary/index.d.ts.map +0 -1
  135. package/dist/components/PluginLoadingBoundary/index.js +0 -1
  136. package/dist/components/PluginRegistry/legacy/PluginRegistry.d.ts +0 -29
  137. package/dist/components/PluginRegistry/legacy/PluginRegistry.d.ts.map +0 -1
  138. package/dist/components/PluginRegistry/legacy/PluginRegistry.js +0 -1
  139. package/dist/components/PluginRegistry/legacy/index.d.ts +0 -2
  140. package/dist/components/PluginRegistry/legacy/index.d.ts.map +0 -1
  141. package/dist/components/PluginRegistry/legacy/index.js +0 -1
  142. package/dist/components/PluginRegistry/legacy/registry-state.d.ts +0 -18
  143. package/dist/components/PluginRegistry/legacy/registry-state.d.ts.map +0 -1
  144. package/dist/components/PluginRegistry/legacy/registry-state.js +0 -1
  145. package/dist/components/PluginRegistry/test-plugins/bert/plugin.json +0 -32
  146. package/dist/components/PluginRegistry/test-plugins/ernie/plugin.json +0 -24
  147. package/dist/model/graph-queries.d.ts +0 -36
  148. package/dist/model/graph-queries.d.ts.map +0 -1
  149. package/dist/model/graph-queries.js +0 -1
@@ -1 +0,0 @@
1
- import{jsx as _jsx}from"react/jsx-runtime";import{createContext,useContext,useMemo,useCallback}from"react";import{useQuery}from"react-query";import{useRegistryState}from"./registry-state";export function PluginRegistry(e){const{children:t,getInstalledPlugins:i,importPluginModule:r}=e,o=useQuery("installed-plugins",i),{loadablePlugins:n,plugins:s,register:u}=useRegistryState(o.data),l=useCallback((async(e,t)=>{if(void 0!==s[e][t])return;const i=n[e][t];if(void 0===i)throw new Error(`No ${e} plugin is available for kind ${t}`);const o=await r(i);u(i,o)}),[s,n,r,u]),a=useMemo((()=>({plugins:s,loadPlugin:o.isLoading?void 0:l})),[o.isLoading,s,l]);return _jsx(PluginRegistryContext.Provider,{value:a,children:t})}const PluginRegistryContext=createContext(void 0);export function usePluginRegistry(){const e=useContext(PluginRegistryContext);if(void 0===e)throw new Error("No PluginRegistry context found. Did you forget a Provider?");return e}
@@ -1,2 +0,0 @@
1
- export * from './PluginRegistry';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/PluginRegistry/legacy/index.ts"],"names":[],"mappings":"AAaA,cAAc,kBAAkB,CAAC"}
@@ -1 +0,0 @@
1
- export*from"./PluginRegistry";
@@ -1,18 +0,0 @@
1
- import { JsonObject } from '@perses-dev/core';
2
- import { PluginModuleResource, PluginType, PluginImplementation } from '../../../model';
3
- export declare type PluginResourcesByTypeAndKind = {
4
- [K in PluginType]: Record<string, PluginModuleResource>;
5
- };
6
- export declare type LoadedPluginsByTypeAndKind = {
7
- [Type in PluginType]: Record<string, PluginImplementation<Type, JsonObject>>;
8
- };
9
- /**
10
- * Hook for setting up plugin registry state. Returns the state, plus a function
11
- * for registering plugins with that state.
12
- */
13
- export declare function useRegistryState(installedPlugins?: PluginModuleResource[]): {
14
- loadablePlugins: PluginResourcesByTypeAndKind;
15
- plugins: LoadedPluginsByTypeAndKind;
16
- register: (resource: PluginModuleResource, pluginModule: unknown) => void;
17
- };
18
- //# sourceMappingURL=registry-state.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry-state.d.ts","sourceRoot":"","sources":["../../../../src/components/PluginRegistry/legacy/registry-state.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAEL,oBAAoB,EACpB,UAAU,EAEV,oBAAoB,EAIrB,MAAM,gBAAgB,CAAC;AAGxB,oBAAY,4BAA4B,GAAG;KACxC,CAAC,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC;CACxD,CAAC;AAGF,oBAAY,0BAA0B,GAAG;KACtC,IAAI,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;CAC7E,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,oBAAoB,EAAE;;;yBAsC3D,oBAAoB,gBAAgB,OAAO,KAAG,IAAI;EAgDhE"}
@@ -1 +0,0 @@
1
- import{useCallback,useMemo,useRef}from"react";import{useImmer}from"use-immer";import{ALL_PLUGIN_TYPES}from"../../../model";export function useRegistryState(e){const n=useMemo((()=>{const n={};for(const e of ALL_PLUGIN_TYPES)n[e]={};if(void 0===e)return n;for(const r of e)for(const e of r.spec.plugins){const{pluginType:o,kind:s}=e,t=n[o];void 0===t[s]?t[s]=r:console.warn(`Got multiple ${o} plugin definitions for kind ${s}`)}return n}),[e]),[r,o]=useImmer((()=>{const e={};for(const n of ALL_PLUGIN_TYPES)e[n]={};return e})),s=useRef(new Set),t=useCallback(((e,n)=>{if(s.current.has(n))return;const r=n;o((n=>{for(const o of e.spec.plugins){const{pluginType:s,kind:t}=o,i=r[t];if(void 0!==i)switch(s){case"Variable":n.Variable[t]=i;break;case"Panel":n.Panel[t]=i;break;case"GraphQuery":n.GraphQuery[t]=i;break;default:throw new Error(`Unhandled plugin config: ${s}`)}else console.warn(`Could not find ${s} plugin for kind '${t}' in ${e.metadata.name}`)}})),s.current.add(n)}),[o]);return{loadablePlugins:n,plugins:r,register:t}}
@@ -1,32 +0,0 @@
1
- {
2
- "kind": "PluginModule",
3
- "metadata": { "name": "Bert" },
4
- "spec": {
5
- "plugins": [
6
- {
7
- "pluginType": "Panel",
8
- "kind": "BertPanel1",
9
- "display": {
10
- "name": "Bert Panel 1",
11
- "description": ""
12
- }
13
- },
14
- {
15
- "pluginType": "Panel",
16
- "kind": "BertPanel2",
17
- "display": {
18
- "name": "Bert Panel 2",
19
- "description": ""
20
- }
21
- },
22
- {
23
- "pluginType": "Variable",
24
- "kind": "BertVariable",
25
- "display": {
26
- "name": "Bert Variable",
27
- "description": ""
28
- }
29
- }
30
- ]
31
- }
32
- }
@@ -1,24 +0,0 @@
1
- {
2
- "kind": "PluginModule",
3
- "metadata": { "name": "Ernie" },
4
- "spec": {
5
- "plugins": [
6
- {
7
- "pluginType": "Variable",
8
- "kind": "ErnieVariable",
9
- "display": {
10
- "name": "Ernie Variable",
11
- "description": "A variable plugin that exists in the plugin module"
12
- }
13
- },
14
- {
15
- "pluginType": "Variable",
16
- "kind": "MissingErnieVariable",
17
- "display": {
18
- "name": "Ernie Variable",
19
- "description": "A variable plugin that exists here in the metadata, but is not in the plugin module"
20
- }
21
- }
22
- ]
23
- }
24
- }
@@ -1,36 +0,0 @@
1
- import { AbsoluteTimeRange, Definition, JsonObject, ResourceSelector, UnixTimeMs } from '@perses-dev/core';
2
- /**
3
- * Options that are common to all Graph Queries.
4
- */
5
- export interface GraphQueryDefinition<Options extends JsonObject = JsonObject> extends Definition<Options> {
6
- datasource?: ResourceSelector;
7
- }
8
- /**
9
- * A plugin for running graph queries.
10
- */
11
- export interface GraphQueryPlugin<Options extends JsonObject = JsonObject> {
12
- useGraphQuery: UseGraphQueryHook<Options>;
13
- }
14
- export declare type UseGraphQueryHook<Options extends JsonObject> = (definition: GraphQueryDefinition<Options>, hookOptions?: UseGraphQueryHookOptions) => {
15
- data?: GraphData;
16
- loading: boolean;
17
- error?: Error;
18
- };
19
- export interface UseGraphQueryHookOptions {
20
- suggestedStepMs?: number;
21
- }
22
- export interface GraphData {
23
- timeRange: AbsoluteTimeRange;
24
- stepMs: number;
25
- series: Iterable<GraphSeries>;
26
- }
27
- export interface GraphSeries {
28
- name: string;
29
- values: Iterable<GraphSeriesValueTuple>;
30
- }
31
- export declare type GraphSeriesValueTuple = [timestamp: UnixTimeMs, value: number];
32
- /**
33
- * Use a Graph Query's results from a graph query plugin at runtime.
34
- */
35
- export declare const useGraphQuery: GraphQueryPlugin['useGraphQuery'];
36
- //# sourceMappingURL=graph-queries.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graph-queries.d.ts","sourceRoot":"","sources":["../../src/model/graph-queries.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG3G;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,CAAE,SAAQ,UAAU,CAAC,OAAO,CAAC;IACxG,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU;IACvE,aAAa,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;CAC3C;AAED,oBAAY,iBAAiB,CAAC,OAAO,SAAS,UAAU,IAAI,CAC1D,UAAU,EAAE,oBAAoB,CAAC,OAAO,CAAC,EACzC,WAAW,CAAC,EAAE,wBAAwB,KACnC;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,MAAM,WAAW,wBAAwB;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;CACzC;AAED,oBAAY,qBAAqB,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAE3E;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,gBAAgB,CAAC,eAAe,CAO3D,CAAC"}
@@ -1 +0,0 @@
1
- import{usePlugin}from"../components/PluginLoadingBoundary";export const useGraphQuery=n=>{const r=usePlugin("GraphQuery",n.kind);return void 0===r?{loading:!0}:r.useGraphQuery(n)};