@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.
- package/dist/cjs/components/PluginRegistry/PluginRegistry.js +43 -29
- package/dist/cjs/components/PluginRegistry/PluginRegistry.test.js +114 -38
- package/dist/cjs/components/PluginRegistry/index.js +17 -18
- package/dist/cjs/components/PluginRegistry/plugin-indexes.js +23 -20
- package/dist/cjs/components/PluginRegistry/plugin-registry-model.js +17 -7
- package/dist/cjs/components/PluginRegistry/test-plugins/bert/index.js +22 -12
- package/dist/cjs/components/PluginRegistry/test-plugins/ernie/index.js +20 -8
- package/dist/cjs/components/PluginRegistry/test-plugins/index.js +59 -39
- package/dist/cjs/components/index.js +17 -20
- package/dist/cjs/index.js +19 -20
- package/dist/cjs/model/datasource.js +16 -0
- package/dist/cjs/model/index.js +21 -21
- package/dist/cjs/model/panels.js +4 -21
- package/dist/cjs/model/plugins.js +4 -7
- package/dist/cjs/model/time-series-queries.js +16 -0
- package/dist/cjs/model/variables.js +5 -17
- package/dist/cjs/model/visual-editing.js +10 -2
- package/dist/cjs/runtime/datasources.js +20 -13
- package/dist/cjs/runtime/index.js +22 -21
- package/dist/cjs/runtime/plugins.js +25 -22
- package/dist/cjs/runtime/query-string.js +17 -10
- package/dist/cjs/runtime/template-variables.js +34 -16
- package/dist/cjs/runtime/time-range.js +17 -10
- package/dist/cjs/runtime/time-series-queries.js +58 -0
- package/dist/cjs/test/render.js +32 -13
- package/dist/cjs/test/setup-tests.js +4 -10
- package/dist/cjs/utils/cache-keys.js +8 -7
- package/dist/components/PluginRegistry/PluginRegistry.js +81 -1
- package/dist/components/PluginRegistry/PluginRegistry.js.map +1 -0
- package/dist/components/PluginRegistry/PluginRegistry.test.js +142 -1
- package/dist/components/PluginRegistry/PluginRegistry.test.js.map +1 -0
- package/dist/components/PluginRegistry/index.js +16 -1
- package/dist/components/PluginRegistry/index.js.map +1 -0
- package/dist/components/PluginRegistry/plugin-indexes.js +66 -1
- package/dist/components/PluginRegistry/plugin-indexes.js.map +1 -0
- package/dist/components/PluginRegistry/plugin-registry-model.d.ts +1 -2
- package/dist/components/PluginRegistry/plugin-registry-model.d.ts.map +1 -1
- package/dist/components/PluginRegistry/plugin-registry-model.js +23 -1
- package/dist/components/PluginRegistry/plugin-registry-model.js.map +1 -0
- package/dist/components/PluginRegistry/test-plugins/bert/index.js +25 -1
- package/dist/components/PluginRegistry/test-plugins/bert/index.js.map +1 -0
- package/dist/components/PluginRegistry/test-plugins/ernie/index.d.ts.map +1 -1
- package/dist/components/PluginRegistry/test-plugins/ernie/index.js +30 -1
- package/dist/components/PluginRegistry/test-plugins/ernie/index.js.map +1 -0
- package/dist/components/PluginRegistry/test-plugins/index.js +35 -1
- package/dist/components/PluginRegistry/test-plugins/index.js.map +1 -0
- package/dist/components/index.d.ts +1 -3
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +15 -1
- package/dist/components/index.js.map +1 -0
- package/dist/index.js +17 -1
- package/dist/index.js.map +1 -0
- package/dist/model/datasource.d.ts +9 -0
- package/dist/model/datasource.d.ts.map +1 -0
- package/dist/model/datasource.js +15 -0
- package/dist/model/datasource.js.map +1 -0
- package/dist/model/index.d.ts +2 -1
- package/dist/model/index.d.ts.map +1 -1
- package/dist/model/index.js +20 -1
- package/dist/model/index.js.map +1 -0
- package/dist/model/panels.d.ts +7 -11
- package/dist/model/panels.d.ts.map +1 -1
- package/dist/model/panels.js +15 -1
- package/dist/model/panels.js.map +1 -0
- package/dist/model/plugins.d.ts +16 -25
- package/dist/model/plugins.d.ts.map +1 -1
- package/dist/model/plugins.js +15 -1
- package/dist/model/plugins.js.map +1 -0
- package/dist/model/time-series-queries.d.ts +28 -0
- package/dist/model/time-series-queries.d.ts.map +1 -0
- package/dist/model/time-series-queries.js +15 -0
- package/dist/model/time-series-queries.js.map +1 -0
- package/dist/model/variables.d.ts +16 -11
- package/dist/model/variables.d.ts.map +1 -1
- package/dist/model/variables.js +15 -1
- package/dist/model/variables.js.map +1 -0
- package/dist/model/visual-editing.d.ts +5 -6
- package/dist/model/visual-editing.d.ts.map +1 -1
- package/dist/model/visual-editing.js +15 -1
- package/dist/model/visual-editing.js.map +1 -0
- package/dist/runtime/datasources.d.ts +5 -9
- package/dist/runtime/datasources.d.ts.map +1 -1
- package/dist/runtime/datasources.js +23 -1
- package/dist/runtime/datasources.js.map +1 -0
- package/dist/runtime/index.d.ts +3 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +20 -1
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/plugins.d.ts +5 -14
- package/dist/runtime/plugins.d.ts.map +1 -1
- package/dist/runtime/plugins.js +33 -1
- package/dist/runtime/plugins.js.map +1 -0
- package/dist/runtime/query-string.js +25 -1
- package/dist/runtime/query-string.js.map +1 -0
- package/dist/runtime/template-variables.d.ts +10 -1
- package/dist/runtime/template-variables.d.ts.map +1 -1
- package/dist/runtime/template-variables.js +44 -1
- package/dist/runtime/template-variables.js.map +1 -0
- package/dist/runtime/time-range.js +25 -1
- package/dist/runtime/time-range.js.map +1 -0
- package/dist/runtime/time-series-queries.d.ts +14 -0
- package/dist/runtime/time-series-queries.d.ts.map +1 -0
- package/dist/runtime/time-series-queries.js +54 -0
- package/dist/runtime/time-series-queries.js.map +1 -0
- package/dist/test/render.d.ts.map +1 -1
- package/dist/test/render.js +42 -1
- package/dist/test/render.js.map +1 -0
- package/dist/test/setup-tests.d.ts.map +1 -1
- package/dist/test/setup-tests.js +16 -1
- package/dist/test/setup-tests.js.map +1 -0
- package/dist/utils/cache-keys.js +19 -1
- package/dist/utils/cache-keys.js.map +1 -0
- package/package.json +11 -8
- package/dist/cjs/components/PluginBoundary.js +0 -14
- package/dist/cjs/components/PluginLoadingBoundary/PluginLoader.js +0 -39
- package/dist/cjs/components/PluginLoadingBoundary/PluginLoadingBoundary.js +0 -85
- package/dist/cjs/components/PluginLoadingBoundary/index.js +0 -29
- package/dist/cjs/components/PluginRegistry/legacy/PluginRegistry.js +0 -57
- package/dist/cjs/components/PluginRegistry/legacy/index.js +0 -29
- package/dist/cjs/components/PluginRegistry/legacy/registry-state.js +0 -97
- package/dist/cjs/components/PluginRegistry/test-plugins/bert/plugin.json +0 -32
- package/dist/cjs/components/PluginRegistry/test-plugins/ernie/plugin.json +0 -24
- package/dist/cjs/model/graph-queries.js +0 -28
- package/dist/components/PluginBoundary.d.ts +0 -13
- package/dist/components/PluginBoundary.d.ts.map +0 -1
- package/dist/components/PluginBoundary.js +0 -1
- package/dist/components/PluginLoadingBoundary/PluginLoader.d.ts +0 -11
- package/dist/components/PluginLoadingBoundary/PluginLoader.d.ts.map +0 -1
- package/dist/components/PluginLoadingBoundary/PluginLoader.js +0 -1
- package/dist/components/PluginLoadingBoundary/PluginLoadingBoundary.d.ts +0 -27
- package/dist/components/PluginLoadingBoundary/PluginLoadingBoundary.d.ts.map +0 -1
- package/dist/components/PluginLoadingBoundary/PluginLoadingBoundary.js +0 -1
- package/dist/components/PluginLoadingBoundary/index.d.ts +0 -2
- package/dist/components/PluginLoadingBoundary/index.d.ts.map +0 -1
- package/dist/components/PluginLoadingBoundary/index.js +0 -1
- package/dist/components/PluginRegistry/legacy/PluginRegistry.d.ts +0 -29
- package/dist/components/PluginRegistry/legacy/PluginRegistry.d.ts.map +0 -1
- package/dist/components/PluginRegistry/legacy/PluginRegistry.js +0 -1
- package/dist/components/PluginRegistry/legacy/index.d.ts +0 -2
- package/dist/components/PluginRegistry/legacy/index.d.ts.map +0 -1
- package/dist/components/PluginRegistry/legacy/index.js +0 -1
- package/dist/components/PluginRegistry/legacy/registry-state.d.ts +0 -18
- package/dist/components/PluginRegistry/legacy/registry-state.d.ts.map +0 -1
- package/dist/components/PluginRegistry/legacy/registry-state.js +0 -1
- package/dist/components/PluginRegistry/test-plugins/bert/plugin.json +0 -32
- package/dist/components/PluginRegistry/test-plugins/ernie/plugin.json +0 -24
- package/dist/model/graph-queries.d.ts +0 -36
- package/dist/model/graph-queries.d.ts.map +0 -1
- 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 +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)};
|