@stackable-labs/sdk-extension-react 1.64.0 → 1.65.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/index.d.ts +20 -5
- package/dist/index.js +14 -2
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { ApiRequest, FetchRequestInit, FetchResponse, ToastPayload, InvokeAction, ContextData, IdentityBaseClaims, IdentityEventType, IdentityEvent, AllowedIconName } from '@stackable-labs/sdk-extension-contracts';
|
|
2
|
+
import { ApiRequest, FetchRequestInit, FetchResponse, ToastPayload, InvokeAction, ContextData, IdentityBaseClaims, IdentityEventType, IdentityEvent, MessagingEventType, MessagingEvent, AllowedIconName } from '@stackable-labs/sdk-extension-contracts';
|
|
3
3
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -98,20 +98,35 @@ declare const useExtension: () => ExtensionContextValue;
|
|
|
98
98
|
declare const useIdentityEvent: (eventType: IdentityEventType, handler: (event: IdentityEvent) => void) => void;
|
|
99
99
|
|
|
100
100
|
/**
|
|
101
|
-
*
|
|
101
|
+
* useExtendIdentity — register a handler for identity claim enrichment.
|
|
102
102
|
*
|
|
103
103
|
* When the host platform detects a customer login, it sends base claims
|
|
104
104
|
* (external_id, email, name) to extensions with the extend:identity permission.
|
|
105
105
|
* The handler returns additional claims to merge into the JWT before signing.
|
|
106
106
|
*
|
|
107
107
|
* @example
|
|
108
|
-
*
|
|
108
|
+
* useExtendIdentity((claims) => ({
|
|
109
109
|
* external_id: `shopify_${claims.external_id}`
|
|
110
110
|
* }))
|
|
111
111
|
*/
|
|
112
112
|
|
|
113
113
|
type ExtendIdentityHandler = (claims: IdentityBaseClaims) => Record<string, unknown> | Promise<Record<string, unknown>>;
|
|
114
|
-
declare const
|
|
114
|
+
declare const useExtendIdentity: (handler: ExtendIdentityHandler) => void;
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* useMessagingEvent — subscribe to messaging events pushed from the host.
|
|
118
|
+
*
|
|
119
|
+
* Supports both wildcard ('postback') and specific ('postback:add_to_cart') subscriptions.
|
|
120
|
+
* Host-side filtering ensures only matching events cross the sandbox boundary;
|
|
121
|
+
* this hook applies a secondary actionName match within the extension.
|
|
122
|
+
*/
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Register a callback for messaging events.
|
|
126
|
+
* - 'postback' — receive ALL postback events (requires elevated marketplace review)
|
|
127
|
+
* - 'postback:<actionName>' — receive only events matching actionName
|
|
128
|
+
*/
|
|
129
|
+
declare const useMessagingEvent: (eventType: MessagingEventType, handler: (event: MessagingEvent) => void) => void;
|
|
115
130
|
|
|
116
131
|
interface SurfaceProps {
|
|
117
132
|
/** The extension point target ID (e.g., "slot.header") */
|
|
@@ -524,4 +539,4 @@ type UseContextDataResult = ContextData & {
|
|
|
524
539
|
};
|
|
525
540
|
declare const useContextData: () => UseContextDataResult;
|
|
526
541
|
|
|
527
|
-
export { type Store, Surface, createExtension, createStore, ui, useCapabilities, useContextData, useExtension, useIdentityEvent,
|
|
542
|
+
export { type Store, Surface, createExtension, createStore, ui, useCapabilities, useContextData, useExtendIdentity, useExtension, useIdentityEvent, useMessagingEvent, useStore, useSurfaceContext };
|
package/dist/index.js
CHANGED
|
@@ -239,12 +239,24 @@ var useIdentityEvent = (eventType, handler) => {
|
|
|
239
239
|
return unsubscribe;
|
|
240
240
|
}, [eventType, handler]);
|
|
241
241
|
};
|
|
242
|
-
var
|
|
242
|
+
var useExtendIdentity = (handler) => {
|
|
243
243
|
useEffect(() => {
|
|
244
244
|
const unregister = registerExtendIdentityHandler(handler);
|
|
245
245
|
return unregister;
|
|
246
246
|
}, [handler]);
|
|
247
247
|
};
|
|
248
|
+
var useMessagingEvent = (eventType, handler) => {
|
|
249
|
+
useEffect(() => {
|
|
250
|
+
const unsubscribe = onExtensionEvent((type, payload) => {
|
|
251
|
+
if (type !== "messaging:postback") return;
|
|
252
|
+
const event = payload;
|
|
253
|
+
if (eventType === "postback" || eventType === `postback:${event.actionName}`) {
|
|
254
|
+
handler(event);
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
return unsubscribe;
|
|
258
|
+
}, [eventType, handler]);
|
|
259
|
+
};
|
|
248
260
|
var useExtensionId = () => {
|
|
249
261
|
const ctx = React2.useContext(ExtensionContext);
|
|
250
262
|
return ctx?.extensionId ?? "unknown";
|
|
@@ -484,4 +496,4 @@ var useContextData = () => {
|
|
|
484
496
|
return { ...contextData, loading };
|
|
485
497
|
};
|
|
486
498
|
|
|
487
|
-
export { Surface, createExtension, createStore, ui_exports as ui, useCapabilities, useContextData, useExtension, useIdentityEvent,
|
|
499
|
+
export { Surface, createExtension, createStore, ui_exports as ui, useCapabilities, useContextData, useExtendIdentity, useExtension, useIdentityEvent, useMessagingEvent, useStore, useSurfaceContext };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stackable-labs/sdk-extension-react",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.65.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"@agnostack/verifyd": "alpha",
|
|
16
16
|
"@remote-dom/core": "1.x",
|
|
17
17
|
"@remote-dom/react": "1.x",
|
|
18
|
-
"@stackable-labs/sdk-extension-contracts": "1.
|
|
18
|
+
"@stackable-labs/sdk-extension-contracts": "1.65.0"
|
|
19
19
|
},
|
|
20
20
|
"peerDependencies": {
|
|
21
21
|
"react": ">=18.0.0 <19.0.0",
|