@kosdev-code/kos-ui-plugin 2.0.41 → 2.1.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/documentation-generator-B8FuhDjB.js +1271 -0
- package/documentation-generator-B8FuhDjB.js.map +1 -0
- package/documentation-generator-E9tFyId_.cjs +266 -0
- package/documentation-generator-E9tFyId_.cjs.map +1 -0
- package/index.cjs +412 -4
- package/index.cjs.map +1 -1
- package/index.d.ts +1 -1
- package/index.d.ts.map +1 -1
- package/index.js +2179 -64
- package/index.js.map +1 -1
- package/lib/components/dynamic-component/dynamic-component.d.ts.map +1 -1
- package/lib/components/dynamic-component/error-boundary.d.ts +17 -0
- package/lib/components/dynamic-component/error-boundary.d.ts.map +1 -0
- package/lib/components/index.d.ts +1 -0
- package/lib/components/index.d.ts.map +1 -1
- package/lib/components/plugin-explorer/extension-point-list.d.ts +13 -0
- package/lib/components/plugin-explorer/extension-point-list.d.ts.map +1 -0
- package/lib/components/plugin-explorer/floating-plugin-explorer.d.ts +13 -0
- package/lib/components/plugin-explorer/floating-plugin-explorer.d.ts.map +1 -0
- package/lib/components/plugin-explorer/index.d.ts +10 -0
- package/lib/components/plugin-explorer/index.d.ts.map +1 -0
- package/lib/components/plugin-explorer/plugin-card.d.ts +10 -0
- package/lib/components/plugin-explorer/plugin-card.d.ts.map +1 -0
- package/lib/components/plugin-explorer/plugin-explorer.d.ts +12 -0
- package/lib/components/plugin-explorer/plugin-explorer.d.ts.map +1 -0
- package/lib/components/plugin-explorer/plugin-health-dashboard.d.ts +9 -0
- package/lib/components/plugin-explorer/plugin-health-dashboard.d.ts.map +1 -0
- package/lib/hooks/index.d.ts +3 -0
- package/lib/hooks/index.d.ts.map +1 -1
- package/lib/hooks/use-extension-component.d.ts +21 -0
- package/lib/hooks/use-extension-component.d.ts.map +1 -0
- package/lib/hooks/use-plugin-discovery.d.ts +23 -0
- package/lib/hooks/use-plugin-discovery.d.ts.map +1 -0
- package/lib/hooks/use-typed-extensions.d.ts +152 -0
- package/lib/hooks/use-typed-extensions.d.ts.map +1 -0
- package/lib/utils/discovery/documentation-generator.d.ts +85 -0
- package/lib/utils/discovery/documentation-generator.d.ts.map +1 -0
- package/lib/utils/discovery/plugin-discovery-service.d.ts +109 -0
- package/lib/utils/discovery/plugin-discovery-service.d.ts.map +1 -0
- package/lib/utils/extension-points/define-extension-point.d.ts +58 -0
- package/lib/utils/extension-points/define-extension-point.d.ts.map +1 -0
- package/lib/utils/extension-points/example-extension-point.d.ts +67 -0
- package/lib/utils/extension-points/example-extension-point.d.ts.map +1 -0
- package/lib/utils/extension-points/extension-point-registry.d.ts +34 -0
- package/lib/utils/extension-points/extension-point-registry.d.ts.map +1 -0
- package/lib/utils/extension-points/extension-point-schema.d.ts +9 -0
- package/lib/utils/extension-points/extension-point-schema.d.ts.map +1 -0
- package/lib/utils/extension-points/extension-point-schemas.d.ts +92 -0
- package/lib/utils/extension-points/extension-point-schemas.d.ts.map +1 -0
- package/lib/utils/extension-points/extension-point-transforms.d.ts +21 -0
- package/lib/utils/extension-points/extension-point-transforms.d.ts.map +1 -0
- package/lib/utils/extension-points/extension-point-types.d.ts +162 -0
- package/lib/utils/extension-points/extension-point-types.d.ts.map +1 -0
- package/lib/utils/extension-points/extension-point-validation.d.ts +43 -0
- package/lib/utils/extension-points/extension-point-validation.d.ts.map +1 -0
- package/lib/utils/index.d.ts +9 -15
- package/lib/utils/index.d.ts.map +1 -1
- package/lib/utils/{plugin-extension-manager.d.ts → plugin-system/plugin-extension-manager.d.ts} +3 -5
- package/lib/utils/plugin-system/plugin-extension-manager.d.ts.map +1 -0
- package/lib/utils/plugin-system/plugin-extension-registry-init.d.ts +2 -0
- package/lib/utils/plugin-system/plugin-extension-registry-init.d.ts.map +1 -0
- package/lib/utils/{plugin-extension-registry.d.ts → plugin-system/plugin-extension-registry.d.ts} +1 -1
- package/lib/utils/plugin-system/plugin-extension-registry.d.ts.map +1 -0
- package/lib/utils/{plugin-reducer.d.ts → plugin-system/plugin-reducer.d.ts} +1 -1
- package/lib/utils/plugin-system/plugin-reducer.d.ts.map +1 -0
- package/lib/utils/{resolve-best-extension.d.ts → plugin-system/resolve-best-extension.d.ts} +1 -1
- package/lib/utils/plugin-system/resolve-best-extension.d.ts.map +1 -0
- package/lib/utils/processors/contribution-reducer.d.ts +5 -0
- package/lib/utils/processors/contribution-reducer.d.ts.map +1 -0
- package/lib/utils/{initialize-plugins.d.ts → processors/initialize-plugins.d.ts} +2 -2
- package/lib/utils/processors/initialize-plugins.d.ts.map +1 -0
- package/lib/utils/processors/initialize-simplified-extensions.d.ts +13 -0
- package/lib/utils/processors/initialize-simplified-extensions.d.ts.map +1 -0
- package/lib/utils/{process-kos-config.d.ts → processors/process-kos-config.d.ts} +1 -1
- package/lib/utils/processors/process-kos-config.d.ts.map +1 -0
- package/lib/utils/processors/simplified-contribution-processor.d.ts +14 -0
- package/lib/utils/processors/simplified-contribution-processor.d.ts.map +1 -0
- package/package.json +2 -7
- package/types/global.d.ts +0 -62
- package/types/plugins.d.ts +3 -127
- package/utils.cjs +1 -1
- package/utils.cjs.map +1 -1
- package/utils.js +99 -82
- package/utils.js.map +1 -1
- package/dev.cjs +0 -57
- package/dev.cjs.map +0 -1
- package/dev.js +0 -403
- package/dev.js.map +0 -1
- package/emotion-react-jsx-runtime.browser.esm-0ViwU5Kh.cjs +0 -17
- package/emotion-react-jsx-runtime.browser.esm-0ViwU5Kh.cjs.map +0 -1
- package/emotion-react-jsx-runtime.browser.esm-70CdOW1e.js +0 -1065
- package/emotion-react-jsx-runtime.browser.esm-70CdOW1e.js.map +0 -1
- package/lib/dev/components/dynamic-view/dynamic-component-view.d.ts +0 -9
- package/lib/dev/components/dynamic-view/dynamic-component-view.d.ts.map +0 -1
- package/lib/dev/components/dynamic-view/dynamic-container.d.ts +0 -8
- package/lib/dev/components/dynamic-view/dynamic-container.d.ts.map +0 -1
- package/lib/dev/components/dynamic-view/dynamic-view-basic.d.ts +0 -13
- package/lib/dev/components/dynamic-view/dynamic-view-basic.d.ts.map +0 -1
- package/lib/dev/components/dynamic-view/dynamic-view-modal.d.ts +0 -15
- package/lib/dev/components/dynamic-view/dynamic-view-modal.d.ts.map +0 -1
- package/lib/dev/components/dynamic-view/dynamic-view-picker.d.ts +0 -9
- package/lib/dev/components/dynamic-view/dynamic-view-picker.d.ts.map +0 -1
- package/lib/dev/components/dynamic-view/dynamic-view-settings.d.ts +0 -15
- package/lib/dev/components/dynamic-view/dynamic-view-settings.d.ts.map +0 -1
- package/lib/dev/components/dynamic-view/dynamic-view-utilities.d.ts +0 -15
- package/lib/dev/components/dynamic-view/dynamic-view-utilities.d.ts.map +0 -1
- package/lib/dev/components/dynamic-view/index.d.ts +0 -8
- package/lib/dev/components/dynamic-view/index.d.ts.map +0 -1
- package/lib/dev/components/index.d.ts +0 -4
- package/lib/dev/components/index.d.ts.map +0 -1
- package/lib/dev/components/shell/header/header.d.ts +0 -2
- package/lib/dev/components/shell/header/header.d.ts.map +0 -1
- package/lib/dev/components/shell/header/index.d.ts +0 -2
- package/lib/dev/components/shell/header/index.d.ts.map +0 -1
- package/lib/dev/components/shell/index.d.ts +0 -3
- package/lib/dev/components/shell/index.d.ts.map +0 -1
- package/lib/dev/components/shell/shell.d.ts +0 -10
- package/lib/dev/components/shell/shell.d.ts.map +0 -1
- package/lib/dev/components/storybook/control-pour-story-container/control-pour-story-container.d.ts +0 -8
- package/lib/dev/components/storybook/control-pour-story-container/control-pour-story-container.d.ts.map +0 -1
- package/lib/dev/components/storybook/control-pour-story-container/index.d.ts +0 -2
- package/lib/dev/components/storybook/control-pour-story-container/index.d.ts.map +0 -1
- package/lib/dev/components/storybook/cui-story-container/cui-story-container.d.ts +0 -8
- package/lib/dev/components/storybook/cui-story-container/cui-story-container.d.ts.map +0 -1
- package/lib/dev/components/storybook/cui-story-container/index.d.ts +0 -2
- package/lib/dev/components/storybook/cui-story-container/index.d.ts.map +0 -1
- package/lib/dev/components/storybook/index.d.ts +0 -7
- package/lib/dev/components/storybook/index.d.ts.map +0 -1
- package/lib/dev/components/storybook/nav-story-container/index.d.ts +0 -2
- package/lib/dev/components/storybook/nav-story-container/index.d.ts.map +0 -1
- package/lib/dev/components/storybook/nav-story-container/nav-story-container.d.ts +0 -8
- package/lib/dev/components/storybook/nav-story-container/nav-story-container.d.ts.map +0 -1
- package/lib/dev/components/storybook/setting-story-container/index.d.ts +0 -2
- package/lib/dev/components/storybook/setting-story-container/index.d.ts.map +0 -1
- package/lib/dev/components/storybook/setting-story-container/setting-story-container.d.ts +0 -8
- package/lib/dev/components/storybook/setting-story-container/setting-story-container.d.ts.map +0 -1
- package/lib/dev/components/storybook/setup-step-story-container/index.d.ts +0 -2
- package/lib/dev/components/storybook/setup-step-story-container/index.d.ts.map +0 -1
- package/lib/dev/components/storybook/setup-step-story-container/setup-step-story-container.d.ts +0 -8
- package/lib/dev/components/storybook/setup-step-story-container/setup-step-story-container.d.ts.map +0 -1
- package/lib/dev/components/storybook/utility-story-container/index.d.ts +0 -2
- package/lib/dev/components/storybook/utility-story-container/index.d.ts.map +0 -1
- package/lib/dev/components/storybook/utility-story-container/utility-story-container.d.ts +0 -8
- package/lib/dev/components/storybook/utility-story-container/utility-story-container.d.ts.map +0 -1
- package/lib/dev/index.d.ts +0 -3
- package/lib/dev/index.d.ts.map +0 -1
- package/lib/dev/utils/index.d.ts +0 -2
- package/lib/dev/utils/index.d.ts.map +0 -1
- package/lib/dev/utils/kos-metadata-parser.d.ts +0 -6
- package/lib/dev/utils/kos-metadata-parser.d.ts.map +0 -1
- package/lib/dev/utils/normalize.d.ts +0 -2
- package/lib/dev/utils/normalize.d.ts.map +0 -1
- package/lib/utils/contribution-reducer.d.ts +0 -5
- package/lib/utils/contribution-reducer.d.ts.map +0 -1
- package/lib/utils/control-pour-reducer.d.ts +0 -5
- package/lib/utils/control-pour-reducer.d.ts.map +0 -1
- package/lib/utils/cui-reducer.d.ts +0 -7
- package/lib/utils/cui-reducer.d.ts.map +0 -1
- package/lib/utils/dashboard-detail-reducer.d.ts +0 -5
- package/lib/utils/dashboard-detail-reducer.d.ts.map +0 -1
- package/lib/utils/dashboard-pump-detail-reducer.d.ts +0 -5
- package/lib/utils/dashboard-pump-detail-reducer.d.ts.map +0 -1
- package/lib/utils/dashboard-reducer.d.ts +0 -3
- package/lib/utils/dashboard-reducer.d.ts.map +0 -1
- package/lib/utils/dashboard-summary-reducer.d.ts +0 -5
- package/lib/utils/dashboard-summary-reducer.d.ts.map +0 -1
- package/lib/utils/initialize-plugins.d.ts.map +0 -1
- package/lib/utils/nav-view-reducer.d.ts +0 -5
- package/lib/utils/nav-view-reducer.d.ts.map +0 -1
- package/lib/utils/plugin-extension-manager.d.ts.map +0 -1
- package/lib/utils/plugin-extension-registry-init.d.ts +0 -2
- package/lib/utils/plugin-extension-registry-init.d.ts.map +0 -1
- package/lib/utils/plugin-extension-registry.d.ts.map +0 -1
- package/lib/utils/plugin-reducer.d.ts.map +0 -1
- package/lib/utils/process-kos-config.d.ts.map +0 -1
- package/lib/utils/resolve-best-extension.d.ts.map +0 -1
- package/lib/utils/settings-reducer.d.ts +0 -8
- package/lib/utils/settings-reducer.d.ts.map +0 -1
- package/lib/utils/setup-reducer.d.ts +0 -7
- package/lib/utils/setup-reducer.d.ts.map +0 -1
- package/lib/utils/state-action-reducer.d.ts +0 -5
- package/lib/utils/state-action-reducer.d.ts.map +0 -1
- package/lib/utils/util-reducer.d.ts +0 -7
- package/lib/utils/util-reducer.d.ts.map +0 -1
- package/resolve-best-extension-CqHaJSdN.js +0 -590
- package/resolve-best-extension-CqHaJSdN.js.map +0 -1
- package/resolve-best-extension-DSdPcuL3.cjs +0 -2
- package/resolve-best-extension-DSdPcuL3.cjs.map +0 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ExtensionPointInfo } from '../../utils';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
|
|
4
|
+
export interface ExtensionPointListProps {
|
|
5
|
+
extensionPoints: ExtensionPointInfo[];
|
|
6
|
+
selectedExtensionId: string | null;
|
|
7
|
+
onExtensionSelect: (extensionId: string) => void;
|
|
8
|
+
searchTerm: string;
|
|
9
|
+
onSearchChange: (searchTerm: string) => void;
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const ExtensionPointList: React.FC<ExtensionPointListProps>;
|
|
13
|
+
//# sourceMappingURL=extension-point-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-point-list.d.ts","sourceRoot":"","sources":["../../../../../../../packages/sdk/kos-ui-plugin/src/lib/components/plugin-explorer/extension-point-list.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,WAAW,uBAAuB;IACtC,eAAe,EAAE,kBAAkB,EAAE,CAAC;IACtC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,iBAAiB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAmGD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAmDhE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { PluginExplorerProps } from './plugin-explorer';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
|
|
4
|
+
export interface FloatingPluginExplorerProps extends Omit<PluginExplorerProps, "className"> {
|
|
5
|
+
/** Keyboard shortcut to toggle (default: "ctrl+shift+p") */
|
|
6
|
+
keyboardShortcut?: string;
|
|
7
|
+
/** Whether to show the toggle button (default: true) */
|
|
8
|
+
showToggleButton?: boolean;
|
|
9
|
+
/** Position of the toggle button (default: "bottom-right") */
|
|
10
|
+
toggleButtonPosition?: "top-left" | "top-right" | "bottom-left" | "bottom-right";
|
|
11
|
+
}
|
|
12
|
+
export declare const FloatingPluginExplorer: React.FC<FloatingPluginExplorerProps>;
|
|
13
|
+
//# sourceMappingURL=floating-plugin-explorer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"floating-plugin-explorer.d.ts","sourceRoot":"","sources":["../../../../../../../packages/sdk/kos-ui-plugin/src/lib/components/plugin-explorer/floating-plugin-explorer.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,EAAkB,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7E,MAAM,WAAW,2BACf,SAAQ,IAAI,CAAC,mBAAmB,EAAE,WAAW,CAAC;IAC9C,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,8DAA8D;IAC9D,oBAAoB,CAAC,EACjB,UAAU,GACV,WAAW,GACX,aAAa,GACb,cAAc,CAAC;CACpB;AA6GD,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAsHxE,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { ExtensionPointList } from './extension-point-list';
|
|
2
|
+
export { FloatingPluginExplorer } from './floating-plugin-explorer';
|
|
3
|
+
export { PluginCard } from './plugin-card';
|
|
4
|
+
export { PluginExplorer } from './plugin-explorer';
|
|
5
|
+
export { PluginHealthDashboard } from './plugin-health-dashboard';
|
|
6
|
+
export type { ExtensionPointListProps } from './extension-point-list';
|
|
7
|
+
export type { PluginCardProps } from './plugin-card';
|
|
8
|
+
export type { PluginExplorerProps } from './plugin-explorer';
|
|
9
|
+
export type { PluginHealthDashboardProps } from './plugin-health-dashboard';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/sdk/kos-ui-plugin/src/lib/components/plugin-explorer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,YAAY,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,YAAY,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PluginExtension } from '../../../types/plugins';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
|
|
4
|
+
export interface PluginCardProps {
|
|
5
|
+
plugin: PluginExtension;
|
|
6
|
+
extensionPointId: string;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const PluginCard: React.FC<PluginCardProps>;
|
|
10
|
+
//# sourceMappingURL=plugin-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-card.d.ts","sourceRoot":"","sources":["../../../../../../../packages/sdk/kos-ui-plugin/src/lib/components/plugin-explorer/plugin-card.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,eAAe,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA4LD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAgGhD,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
|
|
3
|
+
export interface PluginExplorerProps {
|
|
4
|
+
/** Optional CSS class name */
|
|
5
|
+
className?: string;
|
|
6
|
+
/** Whether to show legacy extension points (non-simplified) */
|
|
7
|
+
showLegacyExtensions?: boolean;
|
|
8
|
+
/** Optional filter for extension point IDs */
|
|
9
|
+
extensionFilter?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const PluginExplorer: React.FC<PluginExplorerProps>;
|
|
12
|
+
//# sourceMappingURL=plugin-explorer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-explorer.d.ts","sourceRoot":"","sources":["../../../../../../../packages/sdk/kos-ui-plugin/src/lib/components/plugin-explorer/plugin-explorer.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAmB,MAAM,OAAO,CAAC;AAMxC,MAAM,WAAW,mBAAmB;IAClC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAqHD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAoMxD,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { PluginHealthStats } from '../../utils';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
|
|
4
|
+
export interface PluginHealthDashboardProps {
|
|
5
|
+
healthStats: PluginHealthStats;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const PluginHealthDashboard: React.FC<PluginHealthDashboardProps>;
|
|
9
|
+
//# sourceMappingURL=plugin-health-dashboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-health-dashboard.d.ts","sourceRoot":"","sources":["../../../../../../../packages/sdk/kos-ui-plugin/src/lib/components/plugin-explorer/plugin-health-dashboard.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+FD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAiFtE,CAAC"}
|
package/lib/hooks/index.d.ts
CHANGED
package/lib/hooks/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/sdk/kos-ui-plugin/src/lib/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/sdk/kos-ui-plugin/src/lib/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ExtensionPointDefinition } from '../utils/extension-points/extension-point-types';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Props for extension components created by the hook
|
|
6
|
+
*/
|
|
7
|
+
export interface ExtensionComponentProps {
|
|
8
|
+
module?: string;
|
|
9
|
+
fallback?: React.ReactNode;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Hook that creates a strongly typed React component for an extension point
|
|
13
|
+
* This moves the React component creation to runtime, avoiding webpack config issues
|
|
14
|
+
*/
|
|
15
|
+
export declare function useExtensionComponent<TData = any, TProcessed = TData, TProps = any>(definition: ExtensionPointDefinition<TData, TProcessed, TProps>): React.ComponentType<ExtensionComponentProps & TProps> | null;
|
|
16
|
+
/**
|
|
17
|
+
* Factory function that creates a component for an extension point
|
|
18
|
+
* Alternative to the hook for non-hook contexts
|
|
19
|
+
*/
|
|
20
|
+
export declare function createExtensionComponent<TData = any, TProcessed = TData, TProps = any>(definition: ExtensionPointDefinition<TData, TProcessed, TProps>): React.ComponentType<ExtensionComponentProps & TProps> | null;
|
|
21
|
+
//# sourceMappingURL=use-extension-component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-extension-component.d.ts","sourceRoot":"","sources":["../../../../../../packages/sdk/kos-ui-plugin/src/lib/hooks/use-extension-component.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAEhG;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,GAAG,GAAG,EACX,UAAU,GAAG,KAAK,EAClB,MAAM,GAAG,GAAG,EAEZ,UAAU,EAAE,wBAAwB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,GAC9D,KAAK,CAAC,aAAa,CAAC,uBAAuB,GAAG,MAAM,CAAC,GAAG,IAAI,CAyB9D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,GAAG,GAAG,EACX,UAAU,GAAG,KAAK,EAClB,MAAM,GAAG,GAAG,EAEZ,UAAU,EAAE,wBAAwB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,GAC9D,KAAK,CAAC,aAAa,CAAC,uBAAuB,GAAG,MAAM,CAAC,GAAG,IAAI,CAuB9D"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ExtensionPointInfo, PluginDiscoveryOptions, PluginHealthStats } from '../utils';
|
|
2
|
+
|
|
3
|
+
export interface UsePluginDiscoveryResult {
|
|
4
|
+
extensionPoints: ExtensionPointInfo[];
|
|
5
|
+
healthStats: PluginHealthStats;
|
|
6
|
+
isLoading: boolean;
|
|
7
|
+
error?: Error;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Hook for discovering extension points and plugins
|
|
11
|
+
*/
|
|
12
|
+
export declare function usePluginDiscovery(options?: PluginDiscoveryOptions): UsePluginDiscoveryResult;
|
|
13
|
+
/**
|
|
14
|
+
* Hook for filtered extension points with search
|
|
15
|
+
*/
|
|
16
|
+
export declare function useFilteredExtensionPoints(searchTerm: string, options?: PluginDiscoveryOptions): UsePluginDiscoveryResult & {
|
|
17
|
+
filteredExtensionPoints: ExtensionPointInfo[];
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Hook for a specific extension point
|
|
21
|
+
*/
|
|
22
|
+
export declare function useExtensionPoint(extensionPointId: string): ExtensionPointInfo | undefined;
|
|
23
|
+
//# sourceMappingURL=use-plugin-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-plugin-discovery.d.ts","sourceRoot":"","sources":["../../../../../../packages/sdk/kos-ui-plugin/src/lib/hooks/use-plugin-discovery.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACvB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,wBAAwB;IACvC,eAAe,EAAE,kBAAkB,EAAE,CAAC;IACtC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,wBAAwB,CAoC1B;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,wBAAwB,GAAG;IAC5B,uBAAuB,EAAE,kBAAkB,EAAE,CAAC;CAC/C,CAgBA;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,gBAAgB,EAAE,MAAM,GACvB,kBAAkB,GAAG,SAAS,CAWhC"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { ExtensionPointDefinition } from '../utils';
|
|
2
|
+
import { BasePluginExtension, PluginExtension } from '../../types/plugins';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Criteria for selecting the best extension from multiple candidates
|
|
6
|
+
*/
|
|
7
|
+
export interface BestExtensionCriteria {
|
|
8
|
+
/** Preferred module/plugin ID */
|
|
9
|
+
preferredModule?: string;
|
|
10
|
+
/**
|
|
11
|
+
* Generic property matching - filters extensions where all specified
|
|
12
|
+
* properties match the values in extension.data
|
|
13
|
+
* @example { environment: 'production', version: '2.0' }
|
|
14
|
+
*/
|
|
15
|
+
propertyMatches?: Record<string, any>;
|
|
16
|
+
/** Custom ranking function */
|
|
17
|
+
customRanker?: (extensions: PluginExtension[]) => PluginExtension | null;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Hook to get all extensions for a specific extension point with full type safety
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```tsx
|
|
24
|
+
* // For simplified extension points (with type inference)
|
|
25
|
+
* const nutritionalExtensions = useExtensions(CuiNutritionalData);
|
|
26
|
+
* // Type: BasePluginExtension & { data: ProcessedNutritionalData }[]
|
|
27
|
+
*
|
|
28
|
+
* // For legacy extension points (generic)
|
|
29
|
+
* const cuiExtensions = useExtensions("ddk.cui.settings.config");
|
|
30
|
+
* // Type: PluginExtension[]
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare function useExtensions<TData = any, TProcessed = TData>(extensionPoint: ExtensionPointDefinition<TData, TProcessed>): (BasePluginExtension & {
|
|
34
|
+
data: TProcessed;
|
|
35
|
+
})[];
|
|
36
|
+
export declare function useExtensions(extensionPointId: string): PluginExtension[];
|
|
37
|
+
/**
|
|
38
|
+
* Hook to get the best extension for a specific extension point with type safety
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```tsx
|
|
42
|
+
* // Get best extension with automatic selection
|
|
43
|
+
* const bestNutrition = useBest(CuiNutritionalData);
|
|
44
|
+
*
|
|
45
|
+
* // Get best extension with property matching
|
|
46
|
+
* const bestNutrition = useBest(CuiNutritionalData, {
|
|
47
|
+
* propertyMatches: { environment: 'production', version: '2.0' }
|
|
48
|
+
* });
|
|
49
|
+
*
|
|
50
|
+
* // Legacy extension point
|
|
51
|
+
* const bestCui = useBest("ddk.cui.settings.config", {
|
|
52
|
+
* preferredModule: 'my-plugin-id'
|
|
53
|
+
* });
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare function useBest<TData = any, TProcessed = TData>(extensionPoint: ExtensionPointDefinition<TData, TProcessed>, criteria?: BestExtensionCriteria): (BasePluginExtension & {
|
|
57
|
+
data: TProcessed;
|
|
58
|
+
}) | null;
|
|
59
|
+
export declare function useBest(extensionPointId: string, criteria?: BestExtensionCriteria): PluginExtension | null;
|
|
60
|
+
/**
|
|
61
|
+
* Hook to check if any extensions are available for an extension point
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```tsx
|
|
65
|
+
* const hasNutritionExtensions = useHasExtensions(CuiNutritionalData);
|
|
66
|
+
* if (hasNutritionExtensions) {
|
|
67
|
+
* return <DynamicComponent extension={CuiNutritionalData.id} />;
|
|
68
|
+
* }
|
|
69
|
+
* return <DefaultNutritionInfo />;
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export declare function useHasExtensions<TData = any, TProcessed = TData>(extensionPoint: ExtensionPointDefinition<TData, TProcessed>): boolean;
|
|
73
|
+
export declare function useHasExtensions(extensionPointId: string): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Hook to get extension count for an extension point
|
|
76
|
+
* Useful for displaying "X plugins available" messages
|
|
77
|
+
*/
|
|
78
|
+
export declare function useExtensionCount<TData = any, TProcessed = TData>(extensionPoint: ExtensionPointDefinition<TData, TProcessed>): number;
|
|
79
|
+
export declare function useExtensionCount(extensionPointId: string): number;
|
|
80
|
+
/**
|
|
81
|
+
* Hook to get extensions filtered by specific criteria
|
|
82
|
+
* More flexible than useBest when you need multiple filtered results
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```tsx
|
|
86
|
+
* // Get all US-specific extensions
|
|
87
|
+
* const usExtensions = useFilteredExtensions(CuiNutritionalData, {
|
|
88
|
+
* filter: (ext) => ext.data.regionCode === 'US'
|
|
89
|
+
* });
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
export declare function useFilteredExtensions<TData = any, TProcessed = TData>(extensionPoint: ExtensionPointDefinition<TData, TProcessed>, options: {
|
|
93
|
+
filter: (extension: BasePluginExtension & {
|
|
94
|
+
data: TProcessed;
|
|
95
|
+
}) => boolean;
|
|
96
|
+
sort?: (a: BasePluginExtension & {
|
|
97
|
+
data: TProcessed;
|
|
98
|
+
}, b: BasePluginExtension & {
|
|
99
|
+
data: TProcessed;
|
|
100
|
+
}) => number;
|
|
101
|
+
}): (BasePluginExtension & {
|
|
102
|
+
data: TProcessed;
|
|
103
|
+
})[];
|
|
104
|
+
export declare function useFilteredExtensions(extensionPointId: string, options: {
|
|
105
|
+
filter: (extension: PluginExtension) => boolean;
|
|
106
|
+
sort?: (a: PluginExtension, b: PluginExtension) => number;
|
|
107
|
+
}): PluginExtension[];
|
|
108
|
+
/**
|
|
109
|
+
* Hook to load raw modules (non-React components) from extensions
|
|
110
|
+
* Useful for accessing utility functions, services, configurations, or other non-UI modules
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```tsx
|
|
114
|
+
* // Load utility modules
|
|
115
|
+
* const utilityModules = useModules(UtilityExtension);
|
|
116
|
+
*
|
|
117
|
+
* // Load configuration modules
|
|
118
|
+
* const configModules = useModules(ConfigExtension, {
|
|
119
|
+
* filter: (ext) => ext.data.environment === 'production'
|
|
120
|
+
* });
|
|
121
|
+
*
|
|
122
|
+
* // Access loaded modules
|
|
123
|
+
* utilityModules.forEach(({ module, extension }) => {
|
|
124
|
+
* if (module?.validateData) {
|
|
125
|
+
* const isValid = module.validateData(someData);
|
|
126
|
+
* }
|
|
127
|
+
* });
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
export declare function useModules<TData = any, TProcessed = TData>(extensionPoint: ExtensionPointDefinition<TData, TProcessed>, options?: {
|
|
131
|
+
filter?: (extension: BasePluginExtension & {
|
|
132
|
+
data: TProcessed;
|
|
133
|
+
}) => boolean;
|
|
134
|
+
moduleProperty?: string;
|
|
135
|
+
}): Array<{
|
|
136
|
+
extension: BasePluginExtension & {
|
|
137
|
+
data: TProcessed;
|
|
138
|
+
};
|
|
139
|
+
module: any | null;
|
|
140
|
+
loading: boolean;
|
|
141
|
+
error: string | null;
|
|
142
|
+
}>;
|
|
143
|
+
export declare function useModules(extensionPointId: string, options?: {
|
|
144
|
+
filter?: (extension: PluginExtension) => boolean;
|
|
145
|
+
moduleProperty?: string;
|
|
146
|
+
}): Array<{
|
|
147
|
+
extension: PluginExtension;
|
|
148
|
+
module: any | null;
|
|
149
|
+
loading: boolean;
|
|
150
|
+
error: string | null;
|
|
151
|
+
}>;
|
|
152
|
+
//# sourceMappingURL=use-typed-extensions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-typed-extensions.d.ts","sourceRoot":"","sources":["../../../../../../packages/sdk/kos-ui-plugin/src/lib/hooks/use-typed-extensions.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { ExtensionPointInfo } from './plugin-discovery-service';
|
|
2
|
+
import { PluginExtensionsType } from '../../../types/plugins';
|
|
3
|
+
|
|
4
|
+
export interface DocumentationOptions {
|
|
5
|
+
includeUsageExamples?: boolean;
|
|
6
|
+
includeTypeDefinitions?: boolean;
|
|
7
|
+
includeLegacyExtensions?: boolean;
|
|
8
|
+
includePluginHealth?: boolean;
|
|
9
|
+
format?: "markdown" | "html";
|
|
10
|
+
}
|
|
11
|
+
export interface GeneratedDocumentation {
|
|
12
|
+
content: string;
|
|
13
|
+
metadata: {
|
|
14
|
+
generatedAt: string;
|
|
15
|
+
totalExtensionPoints: number;
|
|
16
|
+
totalPlugins: number;
|
|
17
|
+
simplifiedExtensionPoints: number;
|
|
18
|
+
legacyExtensionPoints: number;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Documentation Generator - Creates comprehensive documentation from extension points
|
|
23
|
+
*/
|
|
24
|
+
export declare class DocumentationGenerator {
|
|
25
|
+
/**
|
|
26
|
+
* Generate complete documentation for all extension points
|
|
27
|
+
*/
|
|
28
|
+
static generateFullDocumentation(extensions: PluginExtensionsType | undefined, options?: DocumentationOptions): GeneratedDocumentation;
|
|
29
|
+
/**
|
|
30
|
+
* Generate documentation header with metadata
|
|
31
|
+
*/
|
|
32
|
+
private static generateHeader;
|
|
33
|
+
/**
|
|
34
|
+
* Generate table of contents
|
|
35
|
+
*/
|
|
36
|
+
private static generateTableOfContents;
|
|
37
|
+
/**
|
|
38
|
+
* Generate overview section with health statistics
|
|
39
|
+
*/
|
|
40
|
+
private static generateOverviewSection;
|
|
41
|
+
/**
|
|
42
|
+
* Generate documentation section for a single extension point
|
|
43
|
+
*/
|
|
44
|
+
private static generateExtensionPointSection;
|
|
45
|
+
/**
|
|
46
|
+
* Generate usage examples for an extension point
|
|
47
|
+
*/
|
|
48
|
+
static generateUsageExamples(extensionPoint: ExtensionPointInfo): string;
|
|
49
|
+
/**
|
|
50
|
+
* Generate plugin list with health information
|
|
51
|
+
*/
|
|
52
|
+
private static generatePluginList;
|
|
53
|
+
/**
|
|
54
|
+
* Generate schema fields documentation
|
|
55
|
+
*/
|
|
56
|
+
private static generateSchemaFieldsSection;
|
|
57
|
+
/**
|
|
58
|
+
* Generate contribution structure documentation
|
|
59
|
+
*/
|
|
60
|
+
private static generateContributionStructure;
|
|
61
|
+
/**
|
|
62
|
+
* Generate TypeScript definitions section
|
|
63
|
+
*/
|
|
64
|
+
private static generateTypeDefinitionsSection;
|
|
65
|
+
/**
|
|
66
|
+
* Generate contribution guide
|
|
67
|
+
*/
|
|
68
|
+
private static generateContributionGuide;
|
|
69
|
+
/**
|
|
70
|
+
* Generate troubleshooting section
|
|
71
|
+
*/
|
|
72
|
+
private static generateTroubleshootingSection;
|
|
73
|
+
private static getExtensionPointImportName;
|
|
74
|
+
private static getExtensionPointTypeName;
|
|
75
|
+
private static getHealthEmoji;
|
|
76
|
+
private static inferContributionKey;
|
|
77
|
+
private static isViewBasedExtensionPoint;
|
|
78
|
+
private static isRankableExtensionPoint;
|
|
79
|
+
/**
|
|
80
|
+
* Get schema fields for contribution structure generation
|
|
81
|
+
*/
|
|
82
|
+
private static getSchemaFieldsForContribution;
|
|
83
|
+
private static getSpecificFields;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=documentation-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentation-generator.d.ts","sourceRoot":"","sources":["../../../../../../../packages/sdk/kos-ui-plugin/src/lib/utils/discovery/documentation-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAEV,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGrE,MAAM,WAAW,oBAAoB;IACnC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,YAAY,EAAE,MAAM,CAAC;QACrB,yBAAyB,EAAE,MAAM,CAAC;QAClC,qBAAqB,EAAE,MAAM,CAAC;KAC/B,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,sBAAsB;IACjC;;OAEG;IACH,MAAM,CAAC,yBAAyB,CAC9B,UAAU,EAAE,oBAAoB,GAAG,SAAS,EAC5C,OAAO,GAAE,oBAAyB,GACjC,sBAAsB;IAkDzB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAkB7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAqBtC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IA0BtC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,6BAA6B;IA+D5C;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,cAAc,EAAE,kBAAkB,GAAG,MAAM;IA8ExE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAsCjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAwC1C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,6BAA6B;IA4G5C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,8BAA8B;IAuC7C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IA4CxC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,8BAA8B;IA6C7C,OAAO,CAAC,MAAM,CAAC,2BAA2B;IA6B1C,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAIxC,OAAO,CAAC,MAAM,CAAC,cAAc;IAa7B,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA+BnC,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAexC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAevC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,8BAA8B;IAkB7C,OAAO,CAAC,MAAM,CAAC,iBAAiB;CA8BjC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { PluginExtension, PluginExtensionsType } from '../../../types/plugins';
|
|
2
|
+
|
|
3
|
+
export interface ExtensionPointInfo {
|
|
4
|
+
id: string;
|
|
5
|
+
displayName?: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
source: "simplified" | "legacy";
|
|
8
|
+
metadata?: {
|
|
9
|
+
category?: string;
|
|
10
|
+
tags?: string[];
|
|
11
|
+
since?: string;
|
|
12
|
+
deprecated?: boolean;
|
|
13
|
+
owner?: string;
|
|
14
|
+
};
|
|
15
|
+
pluginCount: number;
|
|
16
|
+
plugins: PluginExtension[];
|
|
17
|
+
}
|
|
18
|
+
export interface PluginHealthStats {
|
|
19
|
+
totalExtensionPoints: number;
|
|
20
|
+
extensionPointsWithPlugins: number;
|
|
21
|
+
totalPlugins: number;
|
|
22
|
+
simplifiedExtensionPoints: number;
|
|
23
|
+
legacyExtensionPoints: number;
|
|
24
|
+
deprecatedExtensionPoints: number;
|
|
25
|
+
}
|
|
26
|
+
export interface PluginDiscoveryOptions {
|
|
27
|
+
includeLegacyExtensions?: boolean;
|
|
28
|
+
includeEmptyExtensionPoints?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface PluginDescriptorValidationResult {
|
|
31
|
+
isValid: boolean;
|
|
32
|
+
errors: string[];
|
|
33
|
+
warnings: string[];
|
|
34
|
+
missingRequired: string[];
|
|
35
|
+
suggestions: string[];
|
|
36
|
+
}
|
|
37
|
+
export interface CompatibilityCheckResult {
|
|
38
|
+
isCompatible: boolean;
|
|
39
|
+
issues: string[];
|
|
40
|
+
missingExtensionPoints: string[];
|
|
41
|
+
incompatibleTypes: string[];
|
|
42
|
+
suggestions: string[];
|
|
43
|
+
}
|
|
44
|
+
export interface PluginDescriptor {
|
|
45
|
+
id: string;
|
|
46
|
+
init?: boolean;
|
|
47
|
+
contributes?: {
|
|
48
|
+
[key: string]: any[];
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Plugin Discovery Service - Core business logic for plugin analysis
|
|
53
|
+
*/
|
|
54
|
+
export declare class PluginDiscoveryService {
|
|
55
|
+
/**
|
|
56
|
+
* Get all extension points with their plugin information
|
|
57
|
+
*/
|
|
58
|
+
static getExtensionPoints(extensions: PluginExtensionsType | undefined, options?: PluginDiscoveryOptions): ExtensionPointInfo[];
|
|
59
|
+
/**
|
|
60
|
+
* Filter extension points based on search criteria
|
|
61
|
+
*/
|
|
62
|
+
static filterExtensionPoints(extensionPoints: ExtensionPointInfo[], searchTerm: string): ExtensionPointInfo[];
|
|
63
|
+
/**
|
|
64
|
+
* Calculate health statistics for the plugin system
|
|
65
|
+
*/
|
|
66
|
+
static calculateHealthStats(extensionPoints: ExtensionPointInfo[]): PluginHealthStats;
|
|
67
|
+
/**
|
|
68
|
+
* Analyze a specific plugin for health and capabilities
|
|
69
|
+
*/
|
|
70
|
+
static analyzePlugin(plugin: PluginExtension): {
|
|
71
|
+
hasComponent: boolean;
|
|
72
|
+
hasRank: boolean;
|
|
73
|
+
healthStatus: "healthy" | "warning" | "error";
|
|
74
|
+
capabilities: string[];
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Get extension point by ID with detailed information
|
|
78
|
+
*/
|
|
79
|
+
static getExtensionPointById(extensionPoints: ExtensionPointInfo[], id: string): ExtensionPointInfo | undefined;
|
|
80
|
+
/**
|
|
81
|
+
* Validate if an extension point ID follows conventions
|
|
82
|
+
*/
|
|
83
|
+
static validateExtensionPointId(id: string): {
|
|
84
|
+
isValid: boolean;
|
|
85
|
+
issues: string[];
|
|
86
|
+
suggestions: string[];
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Validate a plugin descriptor structure and content
|
|
90
|
+
*/
|
|
91
|
+
static validatePluginDescriptor(descriptor: PluginDescriptor): PluginDescriptorValidationResult;
|
|
92
|
+
/**
|
|
93
|
+
* Check compatibility between plugin contributions and available extension points
|
|
94
|
+
*/
|
|
95
|
+
static checkPluginCompatibility(pluginDescriptor: PluginDescriptor, availableExtensionPoints: ExtensionPointInfo[]): CompatibilityCheckResult;
|
|
96
|
+
/**
|
|
97
|
+
* Map contribution keys to their expected extension point IDs
|
|
98
|
+
*/
|
|
99
|
+
private static getExpectedExtensionPoints;
|
|
100
|
+
/**
|
|
101
|
+
* Get comprehensive plugin analysis including validation and compatibility
|
|
102
|
+
*/
|
|
103
|
+
static analyzePluginDescriptor(descriptor: PluginDescriptor, availableExtensionPoints: ExtensionPointInfo[]): {
|
|
104
|
+
validation: PluginDescriptorValidationResult;
|
|
105
|
+
compatibility: CompatibilityCheckResult;
|
|
106
|
+
recommendations: string[];
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=plugin-discovery-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-discovery-service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/sdk/kos-ui-plugin/src/lib/utils/discovery/plugin-discovery-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { ExtensionPointConfig, ExtensionPointDefinition, ViewExtensionPointDefinition } from './extension-point-types';
|
|
2
|
+
|
|
3
|
+
export type { ValidationContext, TransformContext, SchemaFieldInfo, ExtensionPointConfig, ExtensionComponentProps, ExtensionPointDefinition, ViewExtensionPointDefinition, } from './extension-point-types';
|
|
4
|
+
export { extensionPointId } from './extension-point-types';
|
|
5
|
+
export { createViewAwareTransform } from './extension-point-transforms';
|
|
6
|
+
export { getExtensionPointRegistry, registry, } from './extension-point-registry';
|
|
7
|
+
export { getValidationResults } from './extension-point-validation';
|
|
8
|
+
/**
|
|
9
|
+
* Define a new extension point with simplified API
|
|
10
|
+
*
|
|
11
|
+
* Returns an extension point definition that must be explicitly registered
|
|
12
|
+
* by calling the register() method. This prevents automatic registration
|
|
13
|
+
* and circular dependency issues.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* // Simple extension point
|
|
18
|
+
* export const MyFeatureExtension = defineExtensionPoint({
|
|
19
|
+
* id: 'ddk.myFeature',
|
|
20
|
+
* contributionKey: 'myFeature',
|
|
21
|
+
* displayName: 'My Feature',
|
|
22
|
+
* description: 'Extension point for custom features'
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* // Register it explicitly in your app initialization
|
|
26
|
+
* MyFeatureExtension.register();
|
|
27
|
+
*
|
|
28
|
+
* // Extension point with view support
|
|
29
|
+
* export const MyViewExtension = defineExtensionPoint({
|
|
30
|
+
* id: 'ddk.myView.config',
|
|
31
|
+
* contributionKey: 'myView',
|
|
32
|
+
* hasView: true,
|
|
33
|
+
* relatedPoints: {
|
|
34
|
+
* view: 'ddk.myView.view',
|
|
35
|
+
* definition: 'ddk.myView'
|
|
36
|
+
* },
|
|
37
|
+
* transform: (data, context) => ({
|
|
38
|
+
* ...data,
|
|
39
|
+
* processedAt: Date.now()
|
|
40
|
+
* })
|
|
41
|
+
* });
|
|
42
|
+
*
|
|
43
|
+
* // Register it explicitly in your app initialization
|
|
44
|
+
* MyViewExtension.register();
|
|
45
|
+
*
|
|
46
|
+
* // Use the pre-configured component (for view-based extensions)
|
|
47
|
+
* <MyViewExtension.Component
|
|
48
|
+
* module="specific-module-id"
|
|
49
|
+
* fallback={<div>Loading...</div>}
|
|
50
|
+
* customProp="value"
|
|
51
|
+
* />
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare function defineExtensionPoint<TData = any, TProcessed = TData, TProps = any>(config: ExtensionPointConfig<TData, TProcessed, TProps> & {
|
|
55
|
+
hasView: true;
|
|
56
|
+
}): ViewExtensionPointDefinition<TData, TProcessed, TProps>;
|
|
57
|
+
export declare function defineExtensionPoint<TData = any, TProcessed = TData, TProps = any>(config: ExtensionPointConfig<TData, TProcessed, TProps>): ExtensionPointDefinition<TData, TProcessed, TProps>;
|
|
58
|
+
//# sourceMappingURL=define-extension-point.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-extension-point.d.ts","sourceRoot":"","sources":["../../../../../../../packages/sdk/kos-ui-plugin/src/lib/utils/extension-points/define-extension-point.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,oBAAoB,EACpB,wBAAwB,EACxB,4BAA4B,EAC7B,MAAM,yBAAyB,CAAC;AAIjC,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,yBAAyB,EACzB,QAAQ,GACT,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAGH,wBAAgB,oBAAoB,CAClC,KAAK,GAAG,GAAG,EACX,UAAU,GAAG,KAAK,EAClB,MAAM,GAAG,GAAG,EAEZ,MAAM,EAAE,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GAC1E,4BAA4B,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AAG3D,wBAAgB,oBAAoB,CAClC,KAAK,GAAG,GAAG,EACX,UAAU,GAAG,KAAK,EAClB,MAAM,GAAG,GAAG,EAEZ,MAAM,EAAE,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,GACtD,wBAAwB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC"}
|