@sparqjs/plugin-sdk 0.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.
Files changed (69) hide show
  1. package/dist/bridge/index.d.ts +4 -0
  2. package/dist/bridge/index.d.ts.map +1 -0
  3. package/dist/bridge/index.js +3 -0
  4. package/dist/bridge/index.js.map +1 -0
  5. package/dist/bridge/payload.d.ts +2 -0
  6. package/dist/bridge/payload.d.ts.map +1 -0
  7. package/dist/bridge/payload.js +38 -0
  8. package/dist/bridge/payload.js.map +1 -0
  9. package/dist/bridge/plugin-path.d.ts +2 -0
  10. package/dist/bridge/plugin-path.d.ts.map +1 -0
  11. package/dist/bridge/plugin-path.js +27 -0
  12. package/dist/bridge/plugin-path.js.map +1 -0
  13. package/dist/bridge/types.d.ts +81 -0
  14. package/dist/bridge/types.d.ts.map +1 -0
  15. package/dist/bridge/types.js +72 -0
  16. package/dist/bridge/types.js.map +1 -0
  17. package/dist/client/client.d.ts +3 -0
  18. package/dist/client/client.d.ts.map +1 -0
  19. package/dist/client/client.js +317 -0
  20. package/dist/client/client.js.map +1 -0
  21. package/dist/client/index.d.ts +3 -0
  22. package/dist/client/index.d.ts.map +1 -0
  23. package/dist/client/index.js +2 -0
  24. package/dist/client/index.js.map +1 -0
  25. package/dist/client/types.d.ts +183 -0
  26. package/dist/client/types.d.ts.map +1 -0
  27. package/dist/client/types.js +2 -0
  28. package/dist/client/types.js.map +1 -0
  29. package/dist/host/entry.d.ts +4 -0
  30. package/dist/host/entry.d.ts.map +1 -0
  31. package/dist/host/entry.js +102 -0
  32. package/dist/host/entry.js.map +1 -0
  33. package/dist/host/host.d.ts +33 -0
  34. package/dist/host/host.d.ts.map +1 -0
  35. package/dist/host/host.js +434 -0
  36. package/dist/host/host.js.map +1 -0
  37. package/dist/host/index.d.ts +5 -0
  38. package/dist/host/index.d.ts.map +1 -0
  39. package/dist/host/index.js +3 -0
  40. package/dist/host/index.js.map +1 -0
  41. package/dist/host/types.d.ts +76 -0
  42. package/dist/host/types.d.ts.map +1 -0
  43. package/dist/host/types.js +2 -0
  44. package/dist/host/types.js.map +1 -0
  45. package/dist/index.d.ts +4 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +4 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/runtime/index.d.ts +628 -0
  50. package/dist/runtime/index.d.ts.map +1 -0
  51. package/dist/runtime/index.js +30 -0
  52. package/dist/runtime/index.js.map +1 -0
  53. package/dist/testing/index.d.ts +3 -0
  54. package/dist/testing/index.d.ts.map +1 -0
  55. package/dist/testing/index.js +50 -0
  56. package/dist/testing/index.js.map +1 -0
  57. package/dist/vue/index.d.ts +22 -0
  58. package/dist/vue/index.d.ts.map +1 -0
  59. package/dist/vue/index.js +93 -0
  60. package/dist/vue/index.js.map +1 -0
  61. package/dist/vue/overlay.d.ts +6 -0
  62. package/dist/vue/overlay.d.ts.map +1 -0
  63. package/dist/vue/overlay.js +21 -0
  64. package/dist/vue/overlay.js.map +1 -0
  65. package/dist/vue/runtime-state.d.ts +9 -0
  66. package/dist/vue/runtime-state.d.ts.map +1 -0
  67. package/dist/vue/runtime-state.js +20 -0
  68. package/dist/vue/runtime-state.js.map +1 -0
  69. package/package.json +52 -0
@@ -0,0 +1,183 @@
1
+ import type { SparqBridgeVersion, SparqPluginFeature } from '../bridge/index.js';
2
+ export interface SparqPluginUser {
3
+ id: string;
4
+ name: string;
5
+ role: string;
6
+ avatar?: string;
7
+ avatarText?: string;
8
+ }
9
+ export interface SparqPluginContext {
10
+ bridge: {
11
+ version: SparqBridgeVersion;
12
+ surfaceId: string;
13
+ features: SparqPluginFeature[];
14
+ };
15
+ app: {
16
+ title: string;
17
+ environment: string;
18
+ };
19
+ user: SparqPluginUser;
20
+ plugin: {
21
+ code: string;
22
+ entry: string;
23
+ title: string;
24
+ };
25
+ surface: {
26
+ id: string;
27
+ type: 'page' | 'component' | 'settings' | 'full-app' | 'widget';
28
+ title: string;
29
+ };
30
+ menu?: {
31
+ id: string;
32
+ title: string;
33
+ path: string;
34
+ /** 菜单为共享 full-app 指定的插件内部目标,不参与宿主权限判断。 */
35
+ payload?: unknown;
36
+ };
37
+ appearance: {
38
+ mode: 'light' | 'dark';
39
+ locale: string;
40
+ timezone: string;
41
+ tokens: Record<string, string>;
42
+ };
43
+ permissions: string[];
44
+ dev: {
45
+ enabled: boolean;
46
+ entryUrl: string;
47
+ sessionId?: string;
48
+ bridgeUrl?: string;
49
+ };
50
+ }
51
+ export type SparqPluginHostContext = Omit<SparqPluginContext, 'bridge'>;
52
+ export interface SparqPluginHttpRequest {
53
+ method?: string;
54
+ path: string;
55
+ query?: Record<string, unknown>;
56
+ body?: unknown;
57
+ headers?: Record<string, string>;
58
+ }
59
+ export interface SparqPluginSchemaRuntimeRequest {
60
+ operation: string;
61
+ context: Record<string, unknown>;
62
+ }
63
+ export interface SparqPluginSchemaPresentationInput {
64
+ resource: string;
65
+ mode: 'create' | 'edit';
66
+ id?: string | number;
67
+ /** 创建表单的关联上下文初始值;宿主仍按 Schema 和领域规则校验最终提交。 */
68
+ initialValues?: Record<string, unknown>;
69
+ type: 'dialog' | 'drawer';
70
+ title?: string;
71
+ size?: string;
72
+ }
73
+ export interface SparqPluginSchemaPresentationResult {
74
+ changed?: boolean;
75
+ id?: string | number;
76
+ }
77
+ export interface SparqPluginNotifyInput {
78
+ type?: 'success' | 'warning' | 'info' | 'error';
79
+ message: string;
80
+ title?: string;
81
+ }
82
+ export interface SparqPluginConfirmInput {
83
+ type?: 'warning' | 'info' | 'error';
84
+ message: string;
85
+ title?: string;
86
+ confirmText?: string;
87
+ cancelText?: string;
88
+ }
89
+ export interface SparqPluginAsset {
90
+ id?: string | number;
91
+ url: string;
92
+ name?: string;
93
+ title?: string;
94
+ mime?: string;
95
+ size?: number;
96
+ type?: string;
97
+ metadata?: Record<string, unknown>;
98
+ }
99
+ export interface SparqPluginAssetPickInput {
100
+ type?: string;
101
+ accept?: string;
102
+ limit?: number;
103
+ group?: string;
104
+ field?: string;
105
+ props?: Record<string, unknown>;
106
+ }
107
+ export interface SparqPluginAssetUploadInput {
108
+ file: File;
109
+ type?: string;
110
+ accept?: string;
111
+ group?: string;
112
+ field?: string;
113
+ title?: string;
114
+ props?: Record<string, unknown>;
115
+ }
116
+ export interface SparqPluginSurfacePopupInput {
117
+ type?: 'drawer' | 'dialog';
118
+ title?: string;
119
+ entry?: string;
120
+ params?: Record<string, unknown>;
121
+ size?: string;
122
+ closeOnClickModal?: boolean;
123
+ }
124
+ export interface SparqPluginSurfacePopupResult {
125
+ popupId: string;
126
+ result?: unknown;
127
+ }
128
+ export interface SparqPluginSurfaceClosePopupInput {
129
+ result?: unknown;
130
+ }
131
+ export type SparqPluginSurfaceLifecycleState = 'active' | 'inactive' | 'destroyed';
132
+ export interface SparqPluginClientOptions {
133
+ targetWindow?: Window;
134
+ eventWindow?: Window;
135
+ targetOrigin?: string;
136
+ timeoutMs?: number;
137
+ }
138
+ export interface SparqPluginClient {
139
+ connect(): Promise<SparqPluginContext>;
140
+ getContext(): SparqPluginContext | undefined;
141
+ hasFeature(feature: SparqPluginFeature): boolean;
142
+ onContextChange(listener: (context: SparqPluginContext) => void): () => void;
143
+ permissions: {
144
+ has(permission: string): boolean;
145
+ };
146
+ http: {
147
+ request<T = unknown>(input: SparqPluginHttpRequest): Promise<T>;
148
+ };
149
+ feedback: {
150
+ notify(input: SparqPluginNotifyInput): Promise<{
151
+ notified: boolean;
152
+ }>;
153
+ confirm(input: SparqPluginConfirmInput): Promise<{
154
+ confirmed: boolean;
155
+ }>;
156
+ };
157
+ navigation: {
158
+ openResource(resource: string, params?: Record<string, unknown>): Promise<{
159
+ opened: boolean;
160
+ }>;
161
+ };
162
+ schema: {
163
+ runtime<T = unknown>(input: SparqPluginSchemaRuntimeRequest): Promise<T>;
164
+ openPresentation(input: SparqPluginSchemaPresentationInput): Promise<SparqPluginSchemaPresentationResult>;
165
+ };
166
+ assets: {
167
+ pick(input?: SparqPluginAssetPickInput): Promise<SparqPluginAsset[]>;
168
+ upload(input: SparqPluginAssetUploadInput): Promise<SparqPluginAsset>;
169
+ };
170
+ surface: {
171
+ getLifecycleState(): SparqPluginSurfaceLifecycleState | undefined;
172
+ onLifecycleChange(listener: (state: SparqPluginSurfaceLifecycleState) => void): () => void;
173
+ setTitle(title: string): Promise<{
174
+ updated: boolean;
175
+ }>;
176
+ openPopup(input: SparqPluginSurfacePopupInput): Promise<SparqPluginSurfacePopupResult>;
177
+ closePopup(input?: SparqPluginSurfaceClosePopupInput): Promise<{
178
+ closed: boolean;
179
+ }>;
180
+ };
181
+ destroy(): void;
182
+ }
183
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { PluginEntry, PluginEntryValidationResult, ResolvePluginEntryUrlOptions, ResolvedPluginEntry } from './types.js';
2
+ export declare function resolvePluginEntryUrl(entry: PluginEntry | undefined, options?: ResolvePluginEntryUrlOptions): ResolvedPluginEntry;
3
+ export declare function validatePluginEntry(entry: PluginEntry | undefined, options?: ResolvePluginEntryUrlOptions): PluginEntryValidationResult;
4
+ //# sourceMappingURL=entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/host/entry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,WAAW,EACX,2BAA2B,EAI3B,4BAA4B,EAC5B,mBAAmB,EACtB,MAAM,YAAY,CAAA;AAEnB,wBAAgB,qBAAqB,CACjC,KAAK,EAAE,WAAW,GAAG,SAAS,EAC9B,OAAO,GAAE,4BAAiC,GAC3C,mBAAmB,CA4BrB;AAED,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,WAAW,GAAG,SAAS,EAC9B,OAAO,GAAE,4BAAiC,GAC3C,2BAA2B,CA0D7B"}
@@ -0,0 +1,102 @@
1
+ export function resolvePluginEntryUrl(entry, options = {}) {
2
+ if (!entry) {
3
+ return { url: '', mode: 'local', usingDevUrl: false };
4
+ }
5
+ if (options.preferDev ?? false) {
6
+ if (entry.devUrl) {
7
+ return {
8
+ url: entry.devUrl,
9
+ mode: entry.loadMode ?? 'remote',
10
+ usingDevUrl: true,
11
+ };
12
+ }
13
+ return {
14
+ url: entry.launchUrl || '',
15
+ mode: entry.loadMode ?? resolveFallbackLoadMode(entry),
16
+ usingDevUrl: false,
17
+ };
18
+ }
19
+ const mode = entry.loadMode ?? resolveFallbackLoadMode(entry);
20
+ const url = entry.launchUrl ||
21
+ (mode === 'remote'
22
+ ? entry.remoteUrl || entry.localPath || ''
23
+ : entry.localPath || createDefaultLocalPluginPath(options.pluginCode, entry.name) || entry.remoteUrl || '');
24
+ return { url, mode, usingDevUrl: false };
25
+ }
26
+ export function validatePluginEntry(entry, options = {}) {
27
+ const issues = [];
28
+ const resolved = resolvePluginEntryUrl(entry, options);
29
+ if (!entry) {
30
+ return {
31
+ valid: false,
32
+ issues: [{ level: 'error', message: '未找到插件入口。' }],
33
+ resolved,
34
+ };
35
+ }
36
+ if (!entry.name) {
37
+ issues.push({ level: 'error', message: '插件入口缺少 name。', path: 'entry.name' });
38
+ }
39
+ if (!entry.title) {
40
+ issues.push({ level: 'warning', message: '插件入口缺少 title,将使用默认标题展示。', path: 'entry.title' });
41
+ }
42
+ if (!isPluginSandbox(entry.sandbox)) {
43
+ issues.push({
44
+ level: 'error',
45
+ message: `不支持的插件沙箱:${String(entry.sandbox || '未配置')}。`,
46
+ path: 'entry.sandbox',
47
+ });
48
+ }
49
+ if (entry.loadMode && entry.loadMode !== 'local' && entry.loadMode !== 'remote') {
50
+ issues.push({
51
+ level: 'error',
52
+ message: `不支持的加载模式:${String(entry.loadMode)}。`,
53
+ path: 'entry.loadMode',
54
+ });
55
+ }
56
+ if ((options.preferDev ?? false) && !entry.devUrl && !entry.launchUrl) {
57
+ issues.push({
58
+ level: 'error',
59
+ message: '开发环境必须提供 devUrl 或宿主生成的 launchUrl,禁止回退到 localPath 或 remoteUrl。',
60
+ path: 'entry.devUrl',
61
+ });
62
+ }
63
+ else if (!resolved.url) {
64
+ issues.push({ level: 'error', message: '未解析到插件入口地址。', path: 'entry' });
65
+ }
66
+ if (entry.devUrl && !isValidUrlLike(entry.devUrl, options.baseUrl)) {
67
+ issues.push({ level: 'error', message: 'devUrl 不是有效地址。', path: 'entry.devUrl' });
68
+ }
69
+ if (entry.remoteUrl && !isValidUrlLike(entry.remoteUrl, options.baseUrl)) {
70
+ issues.push({ level: 'error', message: 'remoteUrl 不是有效地址。', path: 'entry.remoteUrl' });
71
+ }
72
+ if (entry.launchUrl && !isValidUrlLike(entry.launchUrl, options.baseUrl)) {
73
+ issues.push({ level: 'error', message: 'launchUrl 不是有效地址。', path: 'entry.launchUrl' });
74
+ }
75
+ if (entry.localPath && !entry.localPath.startsWith('/')) {
76
+ issues.push({ level: 'warning', message: 'localPath 建议使用以 / 开头的绝对路径。', path: 'entry.localPath' });
77
+ }
78
+ return {
79
+ valid: !issues.some((issue) => issue.level === 'error'),
80
+ issues,
81
+ resolved,
82
+ };
83
+ }
84
+ function resolveFallbackLoadMode(entry) {
85
+ return entry.remoteUrl && !entry.localPath ? 'remote' : 'local';
86
+ }
87
+ function createDefaultLocalPluginPath(pluginCode, entryName) {
88
+ return pluginCode ? `/plugins/${pluginCode}/${entryName}/index.html` : '';
89
+ }
90
+ function isPluginSandbox(input) {
91
+ return input === 'iframe' || input === 'wujie';
92
+ }
93
+ function isValidUrlLike(input, baseUrl = 'http://localhost/') {
94
+ try {
95
+ new URL(input, baseUrl);
96
+ return true;
97
+ }
98
+ catch {
99
+ return false;
100
+ }
101
+ }
102
+ //# sourceMappingURL=entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/host/entry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { type SparqPluginFeature } from '../bridge/index.js';
2
+ import type { SparqPluginAsset, SparqPluginAssetPickInput, SparqPluginAssetUploadInput, SparqPluginConfirmInput, SparqPluginContext, SparqPluginHostContext, SparqPluginHttpRequest, SparqPluginNotifyInput, SparqPluginSchemaPresentationInput, SparqPluginSchemaPresentationResult, SparqPluginSchemaRuntimeRequest, SparqPluginSurfaceClosePopupInput, SparqPluginSurfacePopupInput, SparqPluginSurfacePopupResult } from '../client/index.js';
3
+ export type PluginIframeIsolation = 'opaque' | 'origin-preserving';
4
+ export interface CreateSparqPluginHostOptions {
5
+ frameWindow: () => Window | null | undefined;
6
+ entryUrl: () => string | undefined;
7
+ context: () => SparqPluginHostContext;
8
+ isolation?: PluginIframeIsolation;
9
+ eventWindow?: Window;
10
+ active?: () => boolean;
11
+ onReady?: () => void;
12
+ request?: (input: SparqPluginHttpRequest, context: SparqPluginContext) => Promise<unknown> | unknown;
13
+ notify?: (input: SparqPluginNotifyInput, context: SparqPluginContext) => Promise<void> | void;
14
+ confirm?: (input: SparqPluginConfirmInput, context: SparqPluginContext) => Promise<boolean> | boolean;
15
+ openResource?: (resource: string, params: Record<string, unknown> | undefined, context: SparqPluginContext) => Promise<boolean | void> | boolean | void;
16
+ schemaRuntime?: (input: SparqPluginSchemaRuntimeRequest, context: SparqPluginContext) => Promise<unknown> | unknown;
17
+ openSchemaPresentation?: (input: SparqPluginSchemaPresentationInput, context: SparqPluginContext) => Promise<SparqPluginSchemaPresentationResult> | SparqPluginSchemaPresentationResult;
18
+ setTitle?: (title: string, context: SparqPluginContext) => Promise<void> | void;
19
+ openPopup?: (input: SparqPluginSurfacePopupInput, context: SparqPluginContext) => Promise<SparqPluginSurfacePopupResult> | SparqPluginSurfacePopupResult;
20
+ closePopup?: (input: SparqPluginSurfaceClosePopupInput, context: SparqPluginContext) => Promise<boolean | void> | boolean | void;
21
+ pickAssets?: (input: SparqPluginAssetPickInput, context: SparqPluginContext) => Promise<SparqPluginAsset[]> | SparqPluginAsset[];
22
+ uploadAsset?: (input: SparqPluginAssetUploadInput, context: SparqPluginContext) => Promise<SparqPluginAsset> | SparqPluginAsset;
23
+ }
24
+ export interface SparqPluginHost {
25
+ readonly channel: string;
26
+ readonly features: readonly SparqPluginFeature[];
27
+ initialize(): void;
28
+ setActive(active: boolean): void;
29
+ updateContext(): void;
30
+ destroy(): void;
31
+ }
32
+ export declare function createSparqPluginHost(options: CreateSparqPluginHostOptions): SparqPluginHost;
33
+ //# sourceMappingURL=host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/host/host.ts"],"names":[],"mappings":"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"}