@stackable-labs/sdk-extension-host 1.5.0 → 1.6.1
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.
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
* CapabilityRPCHandler — receives capability calls from sandbox,
|
|
3
3
|
* enforces permissions, and executes them on the host side.
|
|
4
4
|
*/
|
|
5
|
-
import type { ApiRequest, ToastPayload, ActionInvokePayload } from '@stackable-labs/sdk-extension-contracts';
|
|
5
|
+
import type { ApiRequest, FetchRequest, FetchResponse, ToastPayload, ActionInvokePayload } from '@stackable-labs/sdk-extension-contracts';
|
|
6
6
|
export interface CapabilityHandlers {
|
|
7
7
|
'data.query': (payload: ApiRequest) => Promise<unknown>;
|
|
8
|
+
'data.fetch': (extensionId: string, payload: FetchRequest) => Promise<FetchResponse>;
|
|
8
9
|
'actions.toast': (payload: ToastPayload) => Promise<void>;
|
|
9
10
|
'actions.invoke': (payload: ActionInvokePayload) => Promise<unknown>;
|
|
10
11
|
'context.read': () => Promise<Record<string, unknown>>;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* enforces permissions, and executes them on the host side.
|
|
4
4
|
*/
|
|
5
5
|
import { CAPABILITY_PERMISSION_MAP } from '@stackable-labs/sdk-extension-contracts';
|
|
6
|
-
import {
|
|
6
|
+
import { getSandbox, postToSandbox } from './SandboxManager';
|
|
7
7
|
/**
|
|
8
8
|
* Create an RPC handler that listens for capability requests from sandboxes.
|
|
9
9
|
*/
|
|
@@ -13,15 +13,9 @@ export const createCapabilityRPCHandler = (handlers) => {
|
|
|
13
13
|
if (msg?.type !== 'capability-request')
|
|
14
14
|
return;
|
|
15
15
|
const request = msg;
|
|
16
|
-
//
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if (event.source === sandbox.iframe.contentWindow) {
|
|
20
|
-
extensionId = id;
|
|
21
|
-
break;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
if (!extensionId) {
|
|
16
|
+
// Identify which extension sent this request via extensionId in the message.
|
|
17
|
+
const extensionId = request.extensionId;
|
|
18
|
+
if (!extensionId || !getSandbox(extensionId)) {
|
|
25
19
|
console.warn('Received capability request from unknown source');
|
|
26
20
|
return;
|
|
27
21
|
}
|
|
@@ -47,6 +41,9 @@ export const createCapabilityRPCHandler = (handlers) => {
|
|
|
47
41
|
case 'data.query':
|
|
48
42
|
result = await handlers['data.query'](request.payload);
|
|
49
43
|
break;
|
|
44
|
+
case 'data.fetch':
|
|
45
|
+
result = await handlers['data.fetch'](extensionId, request.payload);
|
|
46
|
+
break;
|
|
50
47
|
case 'actions.toast':
|
|
51
48
|
result = await handlers['actions.toast'](request.payload);
|
|
52
49
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CapabilityRPCHandler.js","sourceRoot":"","sources":["../src/CapabilityRPCHandler.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"CapabilityRPCHandler.js","sourceRoot":"","sources":["../src/CapabilityRPCHandler.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stackable-labs/sdk-extension-host",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@stackable-labs/sdk-extension-contracts": "1.
|
|
15
|
+
"@stackable-labs/sdk-extension-contracts": "1.6.1",
|
|
16
16
|
"@remote-dom/core": "1.x",
|
|
17
17
|
"@remote-dom/react": "1.x"
|
|
18
18
|
},
|