@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.
- package/dist/bridge/index.d.ts +4 -0
- package/dist/bridge/index.d.ts.map +1 -0
- package/dist/bridge/index.js +3 -0
- package/dist/bridge/index.js.map +1 -0
- package/dist/bridge/payload.d.ts +2 -0
- package/dist/bridge/payload.d.ts.map +1 -0
- package/dist/bridge/payload.js +38 -0
- package/dist/bridge/payload.js.map +1 -0
- package/dist/bridge/plugin-path.d.ts +2 -0
- package/dist/bridge/plugin-path.d.ts.map +1 -0
- package/dist/bridge/plugin-path.js +27 -0
- package/dist/bridge/plugin-path.js.map +1 -0
- package/dist/bridge/types.d.ts +81 -0
- package/dist/bridge/types.d.ts.map +1 -0
- package/dist/bridge/types.js +72 -0
- package/dist/bridge/types.js.map +1 -0
- package/dist/client/client.d.ts +3 -0
- package/dist/client/client.d.ts.map +1 -0
- package/dist/client/client.js +317 -0
- package/dist/client/client.js.map +1 -0
- package/dist/client/index.d.ts +3 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +2 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/types.d.ts +183 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +2 -0
- package/dist/client/types.js.map +1 -0
- package/dist/host/entry.d.ts +4 -0
- package/dist/host/entry.d.ts.map +1 -0
- package/dist/host/entry.js +102 -0
- package/dist/host/entry.js.map +1 -0
- package/dist/host/host.d.ts +33 -0
- package/dist/host/host.d.ts.map +1 -0
- package/dist/host/host.js +434 -0
- package/dist/host/host.js.map +1 -0
- package/dist/host/index.d.ts +5 -0
- package/dist/host/index.d.ts.map +1 -0
- package/dist/host/index.js +3 -0
- package/dist/host/index.js.map +1 -0
- package/dist/host/types.d.ts +76 -0
- package/dist/host/types.d.ts.map +1 -0
- package/dist/host/types.js +2 -0
- package/dist/host/types.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/index.d.ts +628 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +30 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/testing/index.d.ts +3 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +50 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/vue/index.d.ts +22 -0
- package/dist/vue/index.d.ts.map +1 -0
- package/dist/vue/index.js +93 -0
- package/dist/vue/index.js.map +1 -0
- package/dist/vue/overlay.d.ts +6 -0
- package/dist/vue/overlay.d.ts.map +1 -0
- package/dist/vue/overlay.js +21 -0
- package/dist/vue/overlay.js.map +1 -0
- package/dist/vue/runtime-state.d.ts +9 -0
- package/dist/vue/runtime-state.d.ts.map +1 -0
- package/dist/vue/runtime-state.js +20 -0
- package/dist/vue/runtime-state.js.map +1 -0
- 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 @@
|
|
|
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":"AAAA,OAAO,EAUH,KAAK,kBAAkB,EAC1B,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EACR,gBAAgB,EAChB,yBAAyB,EACzB,2BAA2B,EAC3B,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,kCAAkC,EAClC,mCAAmC,EACnC,+BAA+B,EAC/B,iCAAiC,EACjC,4BAA4B,EAC5B,6BAA6B,EAChC,MAAM,oBAAoB,CAAA;AAE3B,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,mBAAmB,CAAA;AAWlE,MAAM,WAAW,4BAA4B;IACzC,WAAW,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAC5C,QAAQ,EAAE,MAAM,MAAM,GAAG,SAAS,CAAA;IAClC,OAAO,EAAE,MAAM,sBAAsB,CAAA;IACrC,SAAS,CAAC,EAAE,qBAAqB,CAAA;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,OAAO,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,EAAE,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;IACpG,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,EAAE,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC7F,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;IACrG,YAAY,CAAC,EAAE,CACX,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC3C,OAAO,EAAE,kBAAkB,KAC1B,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,OAAO,GAAG,IAAI,CAAA;IAC7C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,+BAA+B,EAAE,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;IACnH,sBAAsB,CAAC,EAAE,CACrB,KAAK,EAAE,kCAAkC,EACzC,OAAO,EAAE,kBAAkB,KAC1B,OAAO,CAAC,mCAAmC,CAAC,GAAG,mCAAmC,CAAA;IACvF,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC/E,SAAS,CAAC,EAAE,CACR,KAAK,EAAE,4BAA4B,EACnC,OAAO,EAAE,kBAAkB,KAC1B,OAAO,CAAC,6BAA6B,CAAC,GAAG,6BAA6B,CAAA;IAC3E,UAAU,CAAC,EAAE,CACT,KAAK,EAAE,iCAAiC,EACxC,OAAO,EAAE,kBAAkB,KAC1B,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,OAAO,GAAG,IAAI,CAAA;IAC7C,UAAU,CAAC,EAAE,CACT,KAAK,EAAE,yBAAyB,EAChC,OAAO,EAAE,kBAAkB,KAC1B,OAAO,CAAC,gBAAgB,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAA;IACrD,WAAW,CAAC,EAAE,CACV,KAAK,EAAE,2BAA2B,EAClC,OAAO,EAAE,kBAAkB,KAC1B,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAA;CACpD;AAED,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAA;IAChD,UAAU,IAAI,IAAI,CAAA;IAClB,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IAChC,aAAa,IAAI,IAAI,CAAA;IACrB,OAAO,IAAI,IAAI,CAAA;CAClB;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,4BAA4B,GAAG,eAAe,CA+M5F"}
|