@stackable-labs/sdk-extension-contracts 1.5.0 → 1.6.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/api.d.ts +2 -4
- package/dist/capabilities.d.ts +20 -0
- package/dist/manifest.d.ts +7 -0
- package/dist/permissions.d.ts +1 -1
- package/dist/permissions.js +2 -0
- package/dist/permissions.js.map +1 -1
- package/package.json +1 -1
package/dist/api.d.ts
CHANGED
package/dist/capabilities.d.ts
CHANGED
|
@@ -3,6 +3,23 @@
|
|
|
3
3
|
* Defines the host-mediated APIs that extensions can call via RPC.
|
|
4
4
|
*/
|
|
5
5
|
import type { ApiRequest } from './api';
|
|
6
|
+
/** Payload for data.fetch capability */
|
|
7
|
+
export interface FetchRequest {
|
|
8
|
+
/** Full URL to fetch — must be on the extension's allowedDomains */
|
|
9
|
+
url: string;
|
|
10
|
+
/** HTTP method (default: 'GET') */
|
|
11
|
+
method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
12
|
+
/** Optional request headers */
|
|
13
|
+
headers?: Record<string, string>;
|
|
14
|
+
/** Optional request body (JSON-serializable) */
|
|
15
|
+
body?: unknown;
|
|
16
|
+
}
|
|
17
|
+
/** Response returned to the extension */
|
|
18
|
+
export interface FetchResponse {
|
|
19
|
+
status: number;
|
|
20
|
+
ok: boolean;
|
|
21
|
+
data: unknown;
|
|
22
|
+
}
|
|
6
23
|
/** Payload for actions.toast capability */
|
|
7
24
|
export interface ToastPayload {
|
|
8
25
|
message: string;
|
|
@@ -24,6 +41,9 @@ export interface ContextData {
|
|
|
24
41
|
export type CapabilityCall = {
|
|
25
42
|
type: 'data.query';
|
|
26
43
|
payload: ApiRequest;
|
|
44
|
+
} | {
|
|
45
|
+
type: 'data.fetch';
|
|
46
|
+
payload: FetchRequest;
|
|
27
47
|
} | {
|
|
28
48
|
type: 'actions.toast';
|
|
29
49
|
payload: ToastPayload;
|
package/dist/manifest.d.ts
CHANGED
|
@@ -17,6 +17,13 @@ export interface ExtensionManifest {
|
|
|
17
17
|
targets: string[];
|
|
18
18
|
/** Permissions required by this extension */
|
|
19
19
|
permissions: Permission[];
|
|
20
|
+
/**
|
|
21
|
+
* Hostnames this extension is permitted to reach via data.fetch.
|
|
22
|
+
* Example: ["api.myservice.com", "cdn.myservice.com"]
|
|
23
|
+
* Must be exact hostname strings — no wildcards, no paths.
|
|
24
|
+
* Use an empty array for extensions that do not use data.fetch.
|
|
25
|
+
*/
|
|
26
|
+
allowedDomains: string[];
|
|
20
27
|
}
|
|
21
28
|
/**
|
|
22
29
|
* Registry entry for an installed extension (returned by /api/extensions).
|
package/dist/permissions.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Extensions declare required permissions in their manifest.
|
|
4
4
|
* Host enforces: capability calls must be a subset of granted permissions.
|
|
5
5
|
*/
|
|
6
|
-
export declare const PERMISSIONS: readonly ["context:read", "data:query", "actions:toast", "actions:invoke"];
|
|
6
|
+
export declare const PERMISSIONS: readonly ["context:read", "data:query", "data:fetch", "actions:toast", "actions:invoke"];
|
|
7
7
|
export type Permission = (typeof PERMISSIONS)[number];
|
|
8
8
|
/**
|
|
9
9
|
* Maps capability types to the permission required to use them.
|
package/dist/permissions.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
export const PERMISSIONS = [
|
|
7
7
|
'context:read',
|
|
8
8
|
'data:query',
|
|
9
|
+
'data:fetch',
|
|
9
10
|
'actions:toast',
|
|
10
11
|
'actions:invoke'
|
|
11
12
|
];
|
|
@@ -15,6 +16,7 @@ export const PERMISSIONS = [
|
|
|
15
16
|
export const CAPABILITY_PERMISSION_MAP = {
|
|
16
17
|
'context.read': 'context:read',
|
|
17
18
|
'data.query': 'data:query',
|
|
19
|
+
'data.fetch': 'data:fetch',
|
|
18
20
|
'actions.toast': 'actions:toast',
|
|
19
21
|
'actions.invoke': 'actions:invoke',
|
|
20
22
|
};
|
package/dist/permissions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,cAAc;IACd,YAAY;IACZ,eAAe;IACf,gBAAgB;CACR,CAAA;AAIV;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAA+B;IACnE,cAAc,EAAE,cAAc;IAC9B,YAAY,EAAE,YAAY;IAC1B,eAAe,EAAE,eAAe;IAChC,gBAAgB,EAAE,gBAAgB;CACnC,CAAA"}
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,cAAc;IACd,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,gBAAgB;CACR,CAAA;AAIV;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAA+B;IACnE,cAAc,EAAE,cAAc;IAC9B,YAAY,EAAE,YAAY;IAC1B,YAAY,EAAE,YAAY;IAC1B,eAAe,EAAE,eAAe;IAChC,gBAAgB,EAAE,gBAAgB;CACnC,CAAA"}
|