@qontinui/ui-bridge 0.1.1 → 0.3.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/ai/index.d.mts +893 -0
- package/dist/ai/index.d.ts +893 -0
- package/dist/ai/index.js +3897 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/index.mjs +3839 -0
- package/dist/ai/index.mjs.map +1 -0
- package/dist/babel-plugin/index.js +515 -0
- package/dist/babel-plugin/index.js.map +1 -0
- package/dist/babel-plugin/index.mjs +499 -0
- package/dist/babel-plugin/index.mjs.map +1 -0
- package/dist/control/index.d.mts +5 -4
- package/dist/control/index.d.ts +5 -4
- package/dist/core/index.d.mts +115 -42
- package/dist/core/index.d.ts +115 -42
- package/dist/core/index.js +0 -983
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.mjs +1 -972
- package/dist/core/index.mjs.map +1 -1
- package/dist/debug/index.d.mts +3 -3
- package/dist/debug/index.d.ts +3 -3
- package/dist/index.d.mts +8 -7
- package/dist/index.d.ts +8 -7
- package/dist/index.js +8249 -4163
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8193 -4152
- package/dist/index.mjs.map +1 -1
- package/dist/{metrics-QCnK0EFw.d.ts → metrics-BfiT_rhZ.d.ts} +2 -2
- package/dist/{metrics-BCG7z7Aq.d.mts → metrics-DTA2bwG7.d.mts} +2 -2
- package/dist/native/control/index.js +453 -0
- package/dist/native/control/index.js.map +1 -0
- package/dist/native/control/index.mjs +450 -0
- package/dist/native/control/index.mjs.map +1 -0
- package/dist/native/core/index.js +486 -0
- package/dist/native/core/index.js.map +1 -0
- package/dist/native/core/index.mjs +475 -0
- package/dist/native/core/index.mjs.map +1 -0
- package/dist/native/debug/index.js +451 -0
- package/dist/native/debug/index.js.map +1 -0
- package/dist/native/debug/index.mjs +449 -0
- package/dist/native/debug/index.mjs.map +1 -0
- package/dist/native/index.js +2274 -0
- package/dist/native/index.js.map +1 -0
- package/dist/native/index.mjs +2246 -0
- package/dist/native/index.mjs.map +1 -0
- package/dist/native/react/index.js +1401 -0
- package/dist/native/react/index.js.map +1 -0
- package/dist/native/react/index.mjs +1389 -0
- package/dist/native/react/index.mjs.map +1 -0
- package/dist/native/server/index.js +415 -0
- package/dist/native/server/index.js.map +1 -0
- package/dist/native/server/index.mjs +410 -0
- package/dist/native/server/index.mjs.map +1 -0
- package/dist/react/index.d.mts +20 -6
- package/dist/react/index.d.ts +20 -6
- package/dist/react/index.js +629 -14
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +629 -14
- package/dist/react/index.mjs.map +1 -1
- package/dist/{registry-CT6BVVKr.d.mts → registry-BKLEm-yk.d.ts} +29 -14
- package/dist/{registry-D4mQ01B3.d.ts → registry-BmZgyCz8.d.mts} +29 -14
- package/dist/render-log/index.d.mts +1 -1
- package/dist/render-log/index.d.ts +1 -1
- package/dist/server/express.d.mts +36 -0
- package/dist/server/express.d.ts +36 -0
- package/dist/server/express.js +196 -0
- package/dist/server/express.js.map +1 -0
- package/dist/server/express.mjs +192 -0
- package/dist/server/express.mjs.map +1 -0
- package/dist/server/handlers.d.mts +93 -0
- package/dist/server/handlers.d.ts +93 -0
- package/dist/server/handlers.js +4278 -0
- package/dist/server/handlers.js.map +1 -0
- package/dist/server/handlers.mjs +4275 -0
- package/dist/server/handlers.mjs.map +1 -0
- package/dist/server/index.d.mts +10 -0
- package/dist/server/index.d.ts +10 -0
- package/dist/server/index.js +5352 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/index.mjs +5337 -0
- package/dist/server/index.mjs.map +1 -0
- package/dist/server/nextjs.d.mts +126 -0
- package/dist/server/nextjs.d.ts +126 -0
- package/dist/server/nextjs.js +287 -0
- package/dist/server/nextjs.js.map +1 -0
- package/dist/server/nextjs.mjs +282 -0
- package/dist/server/nextjs.mjs.map +1 -0
- package/dist/server/standalone.d.mts +6 -0
- package/dist/server/standalone.d.ts +6 -0
- package/dist/server/standalone.js +719 -0
- package/dist/server/standalone.js.map +1 -0
- package/dist/server/standalone.mjs +715 -0
- package/dist/server/standalone.mjs.map +1 -0
- package/dist/standalone-BURj8J3G.d.ts +212 -0
- package/dist/standalone-Dwmel29d.d.mts +212 -0
- package/dist/swc-plugin/index.d.mts +79 -0
- package/dist/swc-plugin/index.d.ts +79 -0
- package/dist/swc-plugin/index.js +15 -0
- package/dist/swc-plugin/index.js.map +1 -0
- package/dist/swc-plugin/index.mjs +9 -0
- package/dist/swc-plugin/index.mjs.map +1 -0
- package/dist/types-B5Q0GVo0.d.mts +646 -0
- package/dist/{types-DdJD9yw5.d.mts → types-B7J7noLK.d.mts} +1 -1
- package/dist/{types-BDkXy5si.d.ts → types-BkNRILUa.d.ts} +1 -1
- package/dist/types-CEQLnFMv.d.mts +156 -0
- package/dist/types-CHnlwiTK.d.ts +156 -0
- package/dist/types-DfPqwU-i.d.ts +646 -0
- package/dist/{types-BpvpStn3.d.mts → types-jKVgTI6_.d.mts} +364 -160
- package/dist/{types-BpvpStn3.d.ts → types-jKVgTI6_.d.ts} +364 -160
- package/package.json +111 -3
- package/swc-plugin-wasm/ui_bridge_swc_plugin.wasm +0 -0
- package/dist/websocket-client-B2LC9CYc.d.mts +0 -124
- package/dist/websocket-client-DupH0X7B.d.ts +0 -124
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
// src/native/server/types.ts
|
|
2
|
+
var UI_BRIDGE_NATIVE_ROUTES = {
|
|
3
|
+
// Control - Elements
|
|
4
|
+
GET_ELEMENTS: {
|
|
5
|
+
method: "GET",
|
|
6
|
+
path: "/ui-bridge/control/elements",
|
|
7
|
+
description: "List all registered elements"
|
|
8
|
+
},
|
|
9
|
+
GET_ELEMENT: {
|
|
10
|
+
method: "GET",
|
|
11
|
+
path: "/ui-bridge/control/element/:id",
|
|
12
|
+
description: "Get element details"
|
|
13
|
+
},
|
|
14
|
+
GET_ELEMENT_STATE: {
|
|
15
|
+
method: "GET",
|
|
16
|
+
path: "/ui-bridge/control/element/:id/state",
|
|
17
|
+
description: "Get element state"
|
|
18
|
+
},
|
|
19
|
+
EXECUTE_ACTION: {
|
|
20
|
+
method: "POST",
|
|
21
|
+
path: "/ui-bridge/control/element/:id/action",
|
|
22
|
+
description: "Execute action on element"
|
|
23
|
+
},
|
|
24
|
+
// Control - Components
|
|
25
|
+
GET_COMPONENTS: {
|
|
26
|
+
method: "GET",
|
|
27
|
+
path: "/ui-bridge/control/components",
|
|
28
|
+
description: "List all registered components"
|
|
29
|
+
},
|
|
30
|
+
GET_COMPONENT: {
|
|
31
|
+
method: "GET",
|
|
32
|
+
path: "/ui-bridge/control/component/:id",
|
|
33
|
+
description: "Get component details"
|
|
34
|
+
},
|
|
35
|
+
EXECUTE_COMPONENT_ACTION: {
|
|
36
|
+
method: "POST",
|
|
37
|
+
path: "/ui-bridge/control/component/:id/action/:actionId",
|
|
38
|
+
description: "Execute component action"
|
|
39
|
+
},
|
|
40
|
+
// Discovery
|
|
41
|
+
FIND: {
|
|
42
|
+
method: "POST",
|
|
43
|
+
path: "/ui-bridge/control/find",
|
|
44
|
+
description: "Find elements matching criteria"
|
|
45
|
+
},
|
|
46
|
+
GET_SNAPSHOT: {
|
|
47
|
+
method: "GET",
|
|
48
|
+
path: "/ui-bridge/control/snapshot",
|
|
49
|
+
description: "Get full bridge snapshot"
|
|
50
|
+
},
|
|
51
|
+
// Workflows
|
|
52
|
+
GET_WORKFLOWS: {
|
|
53
|
+
method: "GET",
|
|
54
|
+
path: "/ui-bridge/control/workflows",
|
|
55
|
+
description: "List all workflows"
|
|
56
|
+
},
|
|
57
|
+
RUN_WORKFLOW: {
|
|
58
|
+
method: "POST",
|
|
59
|
+
path: "/ui-bridge/control/workflow/:id/run",
|
|
60
|
+
description: "Run a workflow"
|
|
61
|
+
},
|
|
62
|
+
// Health
|
|
63
|
+
HEALTH: {
|
|
64
|
+
method: "GET",
|
|
65
|
+
path: "/ui-bridge/health",
|
|
66
|
+
description: "Health check"
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
// src/native/server/handlers.ts
|
|
71
|
+
function success(data) {
|
|
72
|
+
return {
|
|
73
|
+
success: true,
|
|
74
|
+
data,
|
|
75
|
+
timestamp: Date.now()
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
function error(message, code) {
|
|
79
|
+
return {
|
|
80
|
+
success: false,
|
|
81
|
+
error: message,
|
|
82
|
+
code,
|
|
83
|
+
timestamp: Date.now()
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function createServerHandlers(registry, executor) {
|
|
87
|
+
return {
|
|
88
|
+
// Elements
|
|
89
|
+
getElements: async () => {
|
|
90
|
+
const elements = registry.getAllElements().map((e) => ({
|
|
91
|
+
id: e.id,
|
|
92
|
+
type: e.type,
|
|
93
|
+
label: e.label,
|
|
94
|
+
identifier: e.getIdentifier(),
|
|
95
|
+
state: e.getState(),
|
|
96
|
+
actions: e.actions,
|
|
97
|
+
customActions: e.customActions ? Object.keys(e.customActions) : void 0
|
|
98
|
+
}));
|
|
99
|
+
return success({ elements });
|
|
100
|
+
},
|
|
101
|
+
getElement: async (ctx) => {
|
|
102
|
+
const { id } = ctx.params;
|
|
103
|
+
const element = registry.getElement(id);
|
|
104
|
+
if (!element) {
|
|
105
|
+
return error(`Element not found: ${id}`, "ELEMENT_NOT_FOUND");
|
|
106
|
+
}
|
|
107
|
+
return success({
|
|
108
|
+
element: {
|
|
109
|
+
id: element.id,
|
|
110
|
+
type: element.type,
|
|
111
|
+
label: element.label,
|
|
112
|
+
identifier: element.getIdentifier(),
|
|
113
|
+
state: element.getState(),
|
|
114
|
+
actions: element.actions,
|
|
115
|
+
customActions: element.customActions ? Object.keys(element.customActions) : void 0
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
},
|
|
119
|
+
getElementState: async (ctx) => {
|
|
120
|
+
const { id } = ctx.params;
|
|
121
|
+
const element = registry.getElement(id);
|
|
122
|
+
if (!element) {
|
|
123
|
+
return error(`Element not found: ${id}`, "ELEMENT_NOT_FOUND");
|
|
124
|
+
}
|
|
125
|
+
return success({ state: element.getState() });
|
|
126
|
+
},
|
|
127
|
+
executeAction: async (ctx) => {
|
|
128
|
+
const { id } = ctx.params;
|
|
129
|
+
const body = ctx.body;
|
|
130
|
+
if (!body?.action) {
|
|
131
|
+
return error("Action is required", "INVALID_REQUEST");
|
|
132
|
+
}
|
|
133
|
+
const response = await executor.executeAction(id, {
|
|
134
|
+
action: body.action,
|
|
135
|
+
params: body.params,
|
|
136
|
+
waitOptions: body.waitOptions
|
|
137
|
+
});
|
|
138
|
+
if (!response.success) {
|
|
139
|
+
return error(response.error || "Action failed", "ACTION_FAILED");
|
|
140
|
+
}
|
|
141
|
+
return success(response);
|
|
142
|
+
},
|
|
143
|
+
// Components
|
|
144
|
+
getComponents: async () => {
|
|
145
|
+
const components = registry.getAllComponents().map((c) => ({
|
|
146
|
+
id: c.id,
|
|
147
|
+
name: c.name,
|
|
148
|
+
description: c.description,
|
|
149
|
+
actions: c.actions.map((a) => ({ id: a.id, label: a.label })),
|
|
150
|
+
elementIds: c.elementIds
|
|
151
|
+
}));
|
|
152
|
+
return success({ components });
|
|
153
|
+
},
|
|
154
|
+
getComponent: async (ctx) => {
|
|
155
|
+
const { id } = ctx.params;
|
|
156
|
+
const component = registry.getComponent(id);
|
|
157
|
+
if (!component) {
|
|
158
|
+
return error(`Component not found: ${id}`, "COMPONENT_NOT_FOUND");
|
|
159
|
+
}
|
|
160
|
+
return success({
|
|
161
|
+
component: {
|
|
162
|
+
id: component.id,
|
|
163
|
+
name: component.name,
|
|
164
|
+
description: component.description,
|
|
165
|
+
actions: component.actions.map((a) => ({
|
|
166
|
+
id: a.id,
|
|
167
|
+
label: a.label,
|
|
168
|
+
description: a.description
|
|
169
|
+
})),
|
|
170
|
+
elementIds: component.elementIds
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
},
|
|
174
|
+
executeComponentAction: async (ctx) => {
|
|
175
|
+
const { id, actionId } = ctx.params;
|
|
176
|
+
const body = ctx.body;
|
|
177
|
+
const response = await executor.executeComponentAction(id, {
|
|
178
|
+
action: actionId,
|
|
179
|
+
params: body?.params
|
|
180
|
+
});
|
|
181
|
+
if (!response.success) {
|
|
182
|
+
return error(response.error || "Action failed", "ACTION_FAILED");
|
|
183
|
+
}
|
|
184
|
+
return success(response);
|
|
185
|
+
},
|
|
186
|
+
// Discovery
|
|
187
|
+
find: async (ctx) => {
|
|
188
|
+
const body = ctx.body;
|
|
189
|
+
const response = await executor.find({
|
|
190
|
+
types: body?.types,
|
|
191
|
+
testIdPattern: body?.testIdPattern,
|
|
192
|
+
accessibilityLabelPattern: body?.accessibilityLabelPattern,
|
|
193
|
+
visibleOnly: body?.visibleOnly,
|
|
194
|
+
limit: body?.limit
|
|
195
|
+
});
|
|
196
|
+
return success(response);
|
|
197
|
+
},
|
|
198
|
+
getSnapshot: async () => {
|
|
199
|
+
const snapshot = registry.createSnapshot();
|
|
200
|
+
return success(snapshot);
|
|
201
|
+
},
|
|
202
|
+
// Workflows
|
|
203
|
+
getWorkflows: async () => {
|
|
204
|
+
const workflows = registry.getAllWorkflows().map((w) => ({
|
|
205
|
+
id: w.id,
|
|
206
|
+
name: w.name,
|
|
207
|
+
description: w.description,
|
|
208
|
+
stepCount: w.steps.length
|
|
209
|
+
}));
|
|
210
|
+
return success({ workflows });
|
|
211
|
+
},
|
|
212
|
+
runWorkflow: async (ctx) => {
|
|
213
|
+
const { id } = ctx.params;
|
|
214
|
+
const workflow = registry.getWorkflow(id);
|
|
215
|
+
if (!workflow) {
|
|
216
|
+
return error(`Workflow not found: ${id}`, "WORKFLOW_NOT_FOUND");
|
|
217
|
+
}
|
|
218
|
+
return success({
|
|
219
|
+
runId: `run-${Date.now()}`,
|
|
220
|
+
status: "pending"
|
|
221
|
+
});
|
|
222
|
+
},
|
|
223
|
+
// Health
|
|
224
|
+
health: async () => {
|
|
225
|
+
const stats = registry.getStats();
|
|
226
|
+
return success({
|
|
227
|
+
status: "healthy",
|
|
228
|
+
timestamp: Date.now(),
|
|
229
|
+
...stats
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// src/native/server/http-server.ts
|
|
236
|
+
var NativeUIBridgeServer = class {
|
|
237
|
+
constructor(registry, executor, config = {}) {
|
|
238
|
+
this.registry = registry;
|
|
239
|
+
this.executor = executor;
|
|
240
|
+
this.running = false;
|
|
241
|
+
this.config = {
|
|
242
|
+
serverPort: 9876,
|
|
243
|
+
cors: true,
|
|
244
|
+
...config
|
|
245
|
+
};
|
|
246
|
+
this.handlers = createServerHandlers(registry, executor);
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Set the server adapter
|
|
250
|
+
*/
|
|
251
|
+
setAdapter(adapter) {
|
|
252
|
+
this.adapter = adapter;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Start the HTTP server
|
|
256
|
+
*/
|
|
257
|
+
async start() {
|
|
258
|
+
if (this.running) {
|
|
259
|
+
console.warn("[ui-bridge-native] Server already running");
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
if (!this.adapter) {
|
|
263
|
+
console.warn(
|
|
264
|
+
"[ui-bridge-native] No server adapter configured. Call setAdapter() first."
|
|
265
|
+
);
|
|
266
|
+
console.warn(
|
|
267
|
+
"[ui-bridge-native] See documentation for supported adapters."
|
|
268
|
+
);
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
await this.adapter.start(
|
|
272
|
+
this.config.serverPort,
|
|
273
|
+
this.handleRequest.bind(this)
|
|
274
|
+
);
|
|
275
|
+
this.running = true;
|
|
276
|
+
console.log(
|
|
277
|
+
`[ui-bridge-native] HTTP server started on port ${this.config.serverPort}`
|
|
278
|
+
);
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Stop the HTTP server
|
|
282
|
+
*/
|
|
283
|
+
async stop() {
|
|
284
|
+
if (!this.running || !this.adapter) {
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
await this.adapter.stop();
|
|
288
|
+
this.running = false;
|
|
289
|
+
console.log("[ui-bridge-native] HTTP server stopped");
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Check if server is running
|
|
293
|
+
*/
|
|
294
|
+
isRunning() {
|
|
295
|
+
return this.running;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Handle incoming HTTP request
|
|
299
|
+
*/
|
|
300
|
+
async handleRequest(request) {
|
|
301
|
+
const headers = {
|
|
302
|
+
"Content-Type": "application/json"
|
|
303
|
+
};
|
|
304
|
+
if (this.config.cors) {
|
|
305
|
+
headers["Access-Control-Allow-Origin"] = this.config.allowedOrigins ? this.config.allowedOrigins.join(",") : "*";
|
|
306
|
+
headers["Access-Control-Allow-Methods"] = "GET, POST, PUT, DELETE, OPTIONS";
|
|
307
|
+
headers["Access-Control-Allow-Headers"] = "Content-Type, Authorization";
|
|
308
|
+
}
|
|
309
|
+
if (request.method === "OPTIONS") {
|
|
310
|
+
return { status: 204, headers, body: "" };
|
|
311
|
+
}
|
|
312
|
+
try {
|
|
313
|
+
const response = await this.routeRequest(request);
|
|
314
|
+
return {
|
|
315
|
+
status: response.success ? 200 : 400,
|
|
316
|
+
headers,
|
|
317
|
+
body: JSON.stringify(response)
|
|
318
|
+
};
|
|
319
|
+
} catch (error2) {
|
|
320
|
+
const errorResponse = {
|
|
321
|
+
success: false,
|
|
322
|
+
error: error2 instanceof Error ? error2.message : "Internal server error",
|
|
323
|
+
code: "INTERNAL_ERROR",
|
|
324
|
+
timestamp: Date.now()
|
|
325
|
+
};
|
|
326
|
+
return {
|
|
327
|
+
status: 500,
|
|
328
|
+
headers,
|
|
329
|
+
body: JSON.stringify(errorResponse)
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Route request to appropriate handler
|
|
335
|
+
*/
|
|
336
|
+
async routeRequest(request) {
|
|
337
|
+
const { method, path, query, body } = request;
|
|
338
|
+
const parsePath = (pattern, actual) => {
|
|
339
|
+
const patternParts = pattern.split("/");
|
|
340
|
+
const actualParts = actual.split("/");
|
|
341
|
+
if (patternParts.length !== actualParts.length) {
|
|
342
|
+
return null;
|
|
343
|
+
}
|
|
344
|
+
const params2 = {};
|
|
345
|
+
for (let i = 0; i < patternParts.length; i++) {
|
|
346
|
+
if (patternParts[i].startsWith(":")) {
|
|
347
|
+
params2[patternParts[i].slice(1)] = actualParts[i];
|
|
348
|
+
} else if (patternParts[i] !== actualParts[i]) {
|
|
349
|
+
return null;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
return params2;
|
|
353
|
+
};
|
|
354
|
+
if (method === "GET" && path === "/ui-bridge/health") {
|
|
355
|
+
return this.handlers.health({ params: {}, query, body });
|
|
356
|
+
}
|
|
357
|
+
if (method === "GET" && path === "/ui-bridge/control/elements") {
|
|
358
|
+
return this.handlers.getElements({ params: {}, query, body });
|
|
359
|
+
}
|
|
360
|
+
let params = parsePath("/ui-bridge/control/element/:id", path);
|
|
361
|
+
if (method === "GET" && params) {
|
|
362
|
+
return this.handlers.getElement({ params, query, body });
|
|
363
|
+
}
|
|
364
|
+
params = parsePath("/ui-bridge/control/element/:id/state", path);
|
|
365
|
+
if (method === "GET" && params) {
|
|
366
|
+
return this.handlers.getElementState({ params, query, body });
|
|
367
|
+
}
|
|
368
|
+
params = parsePath("/ui-bridge/control/element/:id/action", path);
|
|
369
|
+
if (method === "POST" && params) {
|
|
370
|
+
return this.handlers.executeAction({ params, query, body });
|
|
371
|
+
}
|
|
372
|
+
if (method === "GET" && path === "/ui-bridge/control/components") {
|
|
373
|
+
return this.handlers.getComponents({ params: {}, query, body });
|
|
374
|
+
}
|
|
375
|
+
params = parsePath("/ui-bridge/control/component/:id", path);
|
|
376
|
+
if (method === "GET" && params) {
|
|
377
|
+
return this.handlers.getComponent({ params, query, body });
|
|
378
|
+
}
|
|
379
|
+
params = parsePath("/ui-bridge/control/component/:id/action/:actionId", path);
|
|
380
|
+
if (method === "POST" && params) {
|
|
381
|
+
return this.handlers.executeComponentAction({ params, query, body });
|
|
382
|
+
}
|
|
383
|
+
if (method === "POST" && path === "/ui-bridge/control/find") {
|
|
384
|
+
return this.handlers.find({ params: {}, query, body });
|
|
385
|
+
}
|
|
386
|
+
if (method === "GET" && path === "/ui-bridge/control/snapshot") {
|
|
387
|
+
return this.handlers.getSnapshot({ params: {}, query, body });
|
|
388
|
+
}
|
|
389
|
+
if (method === "GET" && path === "/ui-bridge/control/workflows") {
|
|
390
|
+
return this.handlers.getWorkflows({ params: {}, query, body });
|
|
391
|
+
}
|
|
392
|
+
params = parsePath("/ui-bridge/control/workflow/:id/run", path);
|
|
393
|
+
if (method === "POST" && params) {
|
|
394
|
+
return this.handlers.runWorkflow({ params, query, body });
|
|
395
|
+
}
|
|
396
|
+
return {
|
|
397
|
+
success: false,
|
|
398
|
+
error: `Route not found: ${method} ${path}`,
|
|
399
|
+
code: "NOT_FOUND",
|
|
400
|
+
timestamp: Date.now()
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
};
|
|
404
|
+
function createNativeServer(registry, executor, config) {
|
|
405
|
+
return new NativeUIBridgeServer(registry, executor, config);
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
export { NativeUIBridgeServer, UI_BRIDGE_NATIVE_ROUTES, createNativeServer, createServerHandlers };
|
|
409
|
+
//# sourceMappingURL=index.mjs.map
|
|
410
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/native/server/types.ts","../../../src/native/server/handlers.ts","../../../src/native/server/http-server.ts"],"names":["error","params"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * UI Bridge Native Server Types\n *\n * Types for the embedded HTTP server.\n */\n\nimport type {\n NativeUIBridgeConfig,\n NativeActionResponse,\n NativeFindResponse,\n NativeBridgeSnapshot,\n} from '../core/types';\nimport type { ComponentActionResponse } from '../control/types';\n\n/**\n * Server configuration\n */\nexport interface NativeServerConfig extends NativeUIBridgeConfig {\n /** Enable CORS */\n cors?: boolean;\n /** Allowed origins for CORS */\n allowedOrigins?: string[];\n}\n\n/**\n * Route definition\n */\nexport interface RouteDefinition {\n method: 'GET' | 'POST' | 'PUT' | 'DELETE';\n path: string;\n description: string;\n}\n\n/**\n * All UI Bridge Native routes\n */\nexport const UI_BRIDGE_NATIVE_ROUTES: Record<string, RouteDefinition> = {\n // Control - Elements\n GET_ELEMENTS: {\n method: 'GET',\n path: '/ui-bridge/control/elements',\n description: 'List all registered elements',\n },\n GET_ELEMENT: {\n method: 'GET',\n path: '/ui-bridge/control/element/:id',\n description: 'Get element details',\n },\n GET_ELEMENT_STATE: {\n method: 'GET',\n path: '/ui-bridge/control/element/:id/state',\n description: 'Get element state',\n },\n EXECUTE_ACTION: {\n method: 'POST',\n path: '/ui-bridge/control/element/:id/action',\n description: 'Execute action on element',\n },\n\n // Control - Components\n GET_COMPONENTS: {\n method: 'GET',\n path: '/ui-bridge/control/components',\n description: 'List all registered components',\n },\n GET_COMPONENT: {\n method: 'GET',\n path: '/ui-bridge/control/component/:id',\n description: 'Get component details',\n },\n EXECUTE_COMPONENT_ACTION: {\n method: 'POST',\n path: '/ui-bridge/control/component/:id/action/:actionId',\n description: 'Execute component action',\n },\n\n // Discovery\n FIND: {\n method: 'POST',\n path: '/ui-bridge/control/find',\n description: 'Find elements matching criteria',\n },\n GET_SNAPSHOT: {\n method: 'GET',\n path: '/ui-bridge/control/snapshot',\n description: 'Get full bridge snapshot',\n },\n\n // Workflows\n GET_WORKFLOWS: {\n method: 'GET',\n path: '/ui-bridge/control/workflows',\n description: 'List all workflows',\n },\n RUN_WORKFLOW: {\n method: 'POST',\n path: '/ui-bridge/control/workflow/:id/run',\n description: 'Run a workflow',\n },\n\n // Health\n HEALTH: {\n method: 'GET',\n path: '/ui-bridge/health',\n description: 'Health check',\n },\n};\n\n/**\n * API response wrapper\n */\nexport interface APIResponse<T = unknown> {\n success: boolean;\n data?: T;\n error?: string;\n code?: string;\n timestamp: number;\n}\n\n/**\n * Handler context\n */\nexport interface HandlerContext {\n params: Record<string, string>;\n query: Record<string, string>;\n body: unknown;\n}\n\n/**\n * Handler function type\n */\nexport type HandlerFunction<T = unknown> = (\n context: HandlerContext\n) => Promise<APIResponse<T>>;\n\n/**\n * Server handlers interface\n */\nexport interface NativeServerHandlers {\n // Elements\n getElements: HandlerFunction<{ elements: unknown[] }>;\n getElement: HandlerFunction<{ element: unknown }>;\n getElementState: HandlerFunction<{ state: unknown }>;\n executeAction: HandlerFunction<NativeActionResponse>;\n\n // Components\n getComponents: HandlerFunction<{ components: unknown[] }>;\n getComponent: HandlerFunction<{ component: unknown }>;\n executeComponentAction: HandlerFunction<ComponentActionResponse>;\n\n // Discovery\n find: HandlerFunction<NativeFindResponse>;\n getSnapshot: HandlerFunction<NativeBridgeSnapshot>;\n\n // Workflows\n getWorkflows: HandlerFunction<{ workflows: unknown[] }>;\n runWorkflow: HandlerFunction<{ runId: string; status: string }>;\n\n // Health\n health: HandlerFunction<{ status: string; timestamp: number }>;\n}\n","/**\n * UI Bridge Native Server Handlers\n *\n * Request handlers for the HTTP API endpoints.\n */\n\nimport type { NativeUIBridgeRegistry } from '../core/registry';\nimport type { NativeActionExecutor } from '../control/types';\nimport type {\n APIResponse,\n HandlerContext,\n NativeServerHandlers,\n} from './types';\n\n/**\n * Create a success response\n */\nfunction success<T>(data: T): APIResponse<T> {\n return {\n success: true,\n data,\n timestamp: Date.now(),\n };\n}\n\n/**\n * Create an error response\n */\nfunction error<T = unknown>(message: string, code?: string): APIResponse<T> {\n return {\n success: false,\n error: message,\n code,\n timestamp: Date.now(),\n };\n}\n\n/**\n * Create server handlers\n */\nexport function createServerHandlers(\n registry: NativeUIBridgeRegistry,\n executor: NativeActionExecutor\n): NativeServerHandlers {\n return {\n // Elements\n getElements: async () => {\n const elements = registry.getAllElements().map((e) => ({\n id: e.id,\n type: e.type,\n label: e.label,\n identifier: e.getIdentifier(),\n state: e.getState(),\n actions: e.actions,\n customActions: e.customActions ? Object.keys(e.customActions) : undefined,\n }));\n\n return success({ elements });\n },\n\n getElement: async (ctx: HandlerContext) => {\n const { id } = ctx.params;\n const element = registry.getElement(id);\n\n if (!element) {\n return error(`Element not found: ${id}`, 'ELEMENT_NOT_FOUND');\n }\n\n return success({\n element: {\n id: element.id,\n type: element.type,\n label: element.label,\n identifier: element.getIdentifier(),\n state: element.getState(),\n actions: element.actions,\n customActions: element.customActions\n ? Object.keys(element.customActions)\n : undefined,\n },\n });\n },\n\n getElementState: async (ctx: HandlerContext) => {\n const { id } = ctx.params;\n const element = registry.getElement(id);\n\n if (!element) {\n return error(`Element not found: ${id}`, 'ELEMENT_NOT_FOUND');\n }\n\n return success({ state: element.getState() });\n },\n\n executeAction: async (ctx: HandlerContext) => {\n const { id } = ctx.params;\n const body = ctx.body as {\n action: string;\n params?: Record<string, unknown>;\n waitOptions?: Record<string, unknown>;\n };\n\n if (!body?.action) {\n return error('Action is required', 'INVALID_REQUEST');\n }\n\n const response = await executor.executeAction(id, {\n action: body.action,\n params: body.params,\n waitOptions: body.waitOptions as any,\n });\n\n if (!response.success) {\n return error(response.error || 'Action failed', 'ACTION_FAILED');\n }\n\n return success(response);\n },\n\n // Components\n getComponents: async () => {\n const components = registry.getAllComponents().map((c) => ({\n id: c.id,\n name: c.name,\n description: c.description,\n actions: c.actions.map((a) => ({ id: a.id, label: a.label })),\n elementIds: c.elementIds,\n }));\n\n return success({ components });\n },\n\n getComponent: async (ctx: HandlerContext) => {\n const { id } = ctx.params;\n const component = registry.getComponent(id);\n\n if (!component) {\n return error(`Component not found: ${id}`, 'COMPONENT_NOT_FOUND');\n }\n\n return success({\n component: {\n id: component.id,\n name: component.name,\n description: component.description,\n actions: component.actions.map((a) => ({\n id: a.id,\n label: a.label,\n description: a.description,\n })),\n elementIds: component.elementIds,\n },\n });\n },\n\n executeComponentAction: async (ctx: HandlerContext) => {\n const { id, actionId } = ctx.params;\n const body = ctx.body as { params?: Record<string, unknown> };\n\n const response = await executor.executeComponentAction(id, {\n action: actionId,\n params: body?.params,\n });\n\n if (!response.success) {\n return error(response.error || 'Action failed', 'ACTION_FAILED');\n }\n\n return success(response);\n },\n\n // Discovery\n find: async (ctx: HandlerContext) => {\n const body = ctx.body as {\n types?: string[];\n testIdPattern?: string;\n accessibilityLabelPattern?: string;\n visibleOnly?: boolean;\n limit?: number;\n };\n\n const response = await executor.find({\n types: body?.types as any,\n testIdPattern: body?.testIdPattern,\n accessibilityLabelPattern: body?.accessibilityLabelPattern,\n visibleOnly: body?.visibleOnly,\n limit: body?.limit,\n });\n\n return success(response);\n },\n\n getSnapshot: async () => {\n const snapshot = registry.createSnapshot();\n return success(snapshot);\n },\n\n // Workflows\n getWorkflows: async () => {\n const workflows = registry.getAllWorkflows().map((w) => ({\n id: w.id,\n name: w.name,\n description: w.description,\n stepCount: w.steps.length,\n }));\n\n return success({ workflows });\n },\n\n runWorkflow: async (ctx: HandlerContext) => {\n const { id } = ctx.params;\n const workflow = registry.getWorkflow(id);\n\n if (!workflow) {\n return error(`Workflow not found: ${id}`, 'WORKFLOW_NOT_FOUND');\n }\n\n // TODO: Implement workflow execution\n return success({\n runId: `run-${Date.now()}`,\n status: 'pending',\n });\n },\n\n // Health\n health: async () => {\n const stats = registry.getStats();\n return success({\n status: 'healthy',\n timestamp: Date.now(),\n ...stats,\n });\n },\n };\n}\n","/**\n * UI Bridge Native HTTP Server\n *\n * Abstract HTTP server implementation for React Native.\n * This provides a framework-agnostic server interface that can be\n * implemented using various React Native HTTP server libraries.\n *\n * Supported libraries:\n * - react-native-http-bridge (recommended)\n * - @aspect/react-native-http-server\n * - Custom implementations\n */\n\nimport type { NativeUIBridgeRegistry } from '../core/registry';\nimport type { NativeActionExecutor } from '../control/types';\nimport type {\n NativeServerConfig,\n NativeServerHandlers,\n APIResponse,\n} from './types';\nimport { createServerHandlers } from './handlers';\n\n/**\n * HTTP Request interface (library-agnostic)\n */\nexport interface HTTPRequest {\n method: string;\n path: string;\n headers: Record<string, string>;\n query: Record<string, string>;\n body?: unknown;\n}\n\n/**\n * HTTP Response interface (library-agnostic)\n */\nexport interface HTTPResponse {\n status: number;\n headers: Record<string, string>;\n body: string;\n}\n\n/**\n * Request handler type\n */\nexport type RequestHandler = (request: HTTPRequest) => Promise<HTTPResponse>;\n\n/**\n * Server adapter interface\n *\n * Implement this interface to integrate with your chosen HTTP server library.\n */\nexport interface ServerAdapter {\n /** Start the server */\n start(port: number, handler: RequestHandler): Promise<void>;\n /** Stop the server */\n stop(): Promise<void>;\n /** Check if server is running */\n isRunning(): boolean;\n}\n\n/**\n * Native UI Bridge HTTP Server\n */\nexport class NativeUIBridgeServer {\n private config: NativeServerConfig;\n private handlers: NativeServerHandlers;\n private adapter?: ServerAdapter;\n private running = false;\n\n constructor(\n private registry: NativeUIBridgeRegistry,\n private executor: NativeActionExecutor,\n config: NativeServerConfig = {}\n ) {\n this.config = {\n serverPort: 9876,\n cors: true,\n ...config,\n };\n this.handlers = createServerHandlers(registry, executor);\n }\n\n /**\n * Set the server adapter\n */\n setAdapter(adapter: ServerAdapter): void {\n this.adapter = adapter;\n }\n\n /**\n * Start the HTTP server\n */\n async start(): Promise<void> {\n if (this.running) {\n console.warn('[ui-bridge-native] Server already running');\n return;\n }\n\n if (!this.adapter) {\n console.warn(\n '[ui-bridge-native] No server adapter configured. Call setAdapter() first.'\n );\n console.warn(\n '[ui-bridge-native] See documentation for supported adapters.'\n );\n return;\n }\n\n await this.adapter.start(\n this.config.serverPort!,\n this.handleRequest.bind(this)\n );\n this.running = true;\n\n console.log(\n `[ui-bridge-native] HTTP server started on port ${this.config.serverPort}`\n );\n }\n\n /**\n * Stop the HTTP server\n */\n async stop(): Promise<void> {\n if (!this.running || !this.adapter) {\n return;\n }\n\n await this.adapter.stop();\n this.running = false;\n\n console.log('[ui-bridge-native] HTTP server stopped');\n }\n\n /**\n * Check if server is running\n */\n isRunning(): boolean {\n return this.running;\n }\n\n /**\n * Handle incoming HTTP request\n */\n private async handleRequest(request: HTTPRequest): Promise<HTTPResponse> {\n // Add CORS headers if enabled\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n };\n\n if (this.config.cors) {\n headers['Access-Control-Allow-Origin'] = this.config.allowedOrigins\n ? this.config.allowedOrigins.join(',')\n : '*';\n headers['Access-Control-Allow-Methods'] = 'GET, POST, PUT, DELETE, OPTIONS';\n headers['Access-Control-Allow-Headers'] = 'Content-Type, Authorization';\n }\n\n // Handle CORS preflight\n if (request.method === 'OPTIONS') {\n return { status: 204, headers, body: '' };\n }\n\n try {\n const response = await this.routeRequest(request);\n return {\n status: response.success ? 200 : 400,\n headers,\n body: JSON.stringify(response),\n };\n } catch (error) {\n const errorResponse: APIResponse = {\n success: false,\n error: error instanceof Error ? error.message : 'Internal server error',\n code: 'INTERNAL_ERROR',\n timestamp: Date.now(),\n };\n return {\n status: 500,\n headers,\n body: JSON.stringify(errorResponse),\n };\n }\n }\n\n /**\n * Route request to appropriate handler\n */\n private async routeRequest(request: HTTPRequest): Promise<APIResponse> {\n const { method, path, query, body } = request;\n\n // Parse path parameters\n const parsePath = (\n pattern: string,\n actual: string\n ): Record<string, string> | null => {\n const patternParts = pattern.split('/');\n const actualParts = actual.split('/');\n\n if (patternParts.length !== actualParts.length) {\n return null;\n }\n\n const params: Record<string, string> = {};\n\n for (let i = 0; i < patternParts.length; i++) {\n if (patternParts[i].startsWith(':')) {\n params[patternParts[i].slice(1)] = actualParts[i];\n } else if (patternParts[i] !== actualParts[i]) {\n return null;\n }\n }\n\n return params;\n };\n\n // Health check\n if (method === 'GET' && path === '/ui-bridge/health') {\n return this.handlers.health({ params: {}, query, body });\n }\n\n // Elements\n if (method === 'GET' && path === '/ui-bridge/control/elements') {\n return this.handlers.getElements({ params: {}, query, body });\n }\n\n let params = parsePath('/ui-bridge/control/element/:id', path);\n if (method === 'GET' && params) {\n return this.handlers.getElement({ params, query, body });\n }\n\n params = parsePath('/ui-bridge/control/element/:id/state', path);\n if (method === 'GET' && params) {\n return this.handlers.getElementState({ params, query, body });\n }\n\n params = parsePath('/ui-bridge/control/element/:id/action', path);\n if (method === 'POST' && params) {\n return this.handlers.executeAction({ params, query, body });\n }\n\n // Components\n if (method === 'GET' && path === '/ui-bridge/control/components') {\n return this.handlers.getComponents({ params: {}, query, body });\n }\n\n params = parsePath('/ui-bridge/control/component/:id', path);\n if (method === 'GET' && params) {\n return this.handlers.getComponent({ params, query, body });\n }\n\n params = parsePath('/ui-bridge/control/component/:id/action/:actionId', path);\n if (method === 'POST' && params) {\n return this.handlers.executeComponentAction({ params, query, body });\n }\n\n // Discovery\n if (method === 'POST' && path === '/ui-bridge/control/find') {\n return this.handlers.find({ params: {}, query, body });\n }\n\n if (method === 'GET' && path === '/ui-bridge/control/snapshot') {\n return this.handlers.getSnapshot({ params: {}, query, body });\n }\n\n // Workflows\n if (method === 'GET' && path === '/ui-bridge/control/workflows') {\n return this.handlers.getWorkflows({ params: {}, query, body });\n }\n\n params = parsePath('/ui-bridge/control/workflow/:id/run', path);\n if (method === 'POST' && params) {\n return this.handlers.runWorkflow({ params, query, body });\n }\n\n // Not found\n return {\n success: false,\n error: `Route not found: ${method} ${path}`,\n code: 'NOT_FOUND',\n timestamp: Date.now(),\n };\n }\n}\n\n/**\n * Create a UI Bridge Native server\n */\nexport function createNativeServer(\n registry: NativeUIBridgeRegistry,\n executor: NativeActionExecutor,\n config?: NativeServerConfig\n): NativeUIBridgeServer {\n return new NativeUIBridgeServer(registry, executor, config);\n}\n\n/**\n * Example adapter using react-native-http-bridge\n *\n * To use this adapter:\n * 1. Install: npm install react-native-http-bridge\n * 2. Link native modules\n * 3. Create adapter and pass to server\n *\n * ```tsx\n * import httpBridge from 'react-native-http-bridge';\n *\n * const adapter: ServerAdapter = {\n * start: async (port, handler) => {\n * httpBridge.start(port, 'ui-bridge', async (request) => {\n * const response = await handler({\n * method: request.type,\n * path: request.url,\n * headers: request.headers || {},\n * query: parseQuery(request.url),\n * body: request.postData ? JSON.parse(request.postData) : undefined,\n * });\n * httpBridge.respond(\n * request.requestId,\n * response.status,\n * response.headers['Content-Type'],\n * response.body\n * );\n * });\n * },\n * stop: async () => {\n * httpBridge.stop();\n * },\n * isRunning: () => true,\n * };\n *\n * server.setAdapter(adapter);\n * await server.start();\n * ```\n */\n"]}
|
package/dist/react/index.d.mts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import React$1, { ReactNode } from 'react';
|
|
3
|
-
import {
|
|
4
|
-
import { U as UIBridgeRegistry } from '../registry-
|
|
5
|
-
import {
|
|
3
|
+
import { D as UIBridgeFeatures, U as UIBridgeConfig, M as WSConnectionState, x as RegisteredElement, w as RegisteredComponent, l as BridgeSnapshot, k as BridgeEventType, j as BridgeEventListener, a9 as WSSubscriptionOptions, i as BridgeEvent, r as ElementType, S as StandardAction, o as CustomAction, q as ElementState, p as ElementIdentifier, af as Workflow, G as UIStateGroup, F as UIState, z as StateSnapshot, ag as WorkflowStep, T as TransitionResult, H as UITransition, N as NavigationResult, v as PathResult } from '../types-jKVgTI6_.mjs';
|
|
4
|
+
import { U as UIBridgeRegistry } from '../registry-BmZgyCz8.mjs';
|
|
5
|
+
import { UIBridgeWSClient } from '../core/index.mjs';
|
|
6
6
|
import { RenderLogManager } from '../render-log/index.mjs';
|
|
7
|
-
import { M as MetricsCollector } from '../metrics-
|
|
8
|
-
import { A as ActionExecutor, i as WorkflowEngine, b as ControlActionRequest, c as ControlActionResponse, C as ComponentActionRequest, a as ComponentActionResponse, F as FindRequest, g as FindResponse, j as WorkflowRunRequest, k as WorkflowRunResponse } from '../types-
|
|
7
|
+
import { M as MetricsCollector } from '../metrics-DTA2bwG7.mjs';
|
|
8
|
+
import { A as ActionExecutor, i as WorkflowEngine, b as ControlActionRequest, c as ControlActionResponse, C as ComponentActionRequest, a as ComponentActionResponse, F as FindRequest, g as FindResponse, j as WorkflowRunRequest, k as WorkflowRunResponse } from '../types-B7J7noLK.mjs';
|
|
9
|
+
import '../types-B5Q0GVo0.mjs';
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* UI Bridge context value
|
|
@@ -180,6 +181,15 @@ interface ComponentActionDef<TParams = unknown, TResult = unknown> {
|
|
|
180
181
|
/** Handler function */
|
|
181
182
|
handler: (params?: TParams) => TResult | Promise<TResult>;
|
|
182
183
|
}
|
|
184
|
+
/**
|
|
185
|
+
* Computed property definition for useUIComponent
|
|
186
|
+
*/
|
|
187
|
+
interface ComputedPropertyDef<T = unknown> {
|
|
188
|
+
/** Getter function for the computed value */
|
|
189
|
+
getter: () => T;
|
|
190
|
+
/** Description of what the computed property represents */
|
|
191
|
+
description?: string;
|
|
192
|
+
}
|
|
183
193
|
/**
|
|
184
194
|
* useUIComponent options
|
|
185
195
|
*/
|
|
@@ -196,6 +206,10 @@ interface UseUIComponentOptions {
|
|
|
196
206
|
elementIds?: string[];
|
|
197
207
|
/** Whether to automatically register on mount */
|
|
198
208
|
autoRegister?: boolean;
|
|
209
|
+
/** Function to get the current component state */
|
|
210
|
+
state?: () => Record<string, unknown>;
|
|
211
|
+
/** Computed properties exposed by the component */
|
|
212
|
+
computed?: Record<string, ComputedPropertyDef | (() => unknown)>;
|
|
199
213
|
}
|
|
200
214
|
/**
|
|
201
215
|
* useUIComponent return value
|
|
@@ -783,4 +797,4 @@ interface AutoRegisterProviderProps extends Omit<AutoRegisterOptions, 'root'> {
|
|
|
783
797
|
*/
|
|
784
798
|
declare function AutoRegisterProvider({ children, scopeToChildren, enabled, idStrategy, debounceMs, includeHidden, includeSelectors, excludeSelectors, generateId, onRegister, onUnregister, }: AutoRegisterProviderProps): react_jsx_runtime.JSX.Element;
|
|
785
799
|
|
|
786
|
-
export { type AutoRegisterOptions, AutoRegisterProvider, type AutoRegisterProviderProps, type ComponentActionDef, type IdStrategy, type UIBridgeContextValue, UIBridgeProvider, type UIBridgeProviderProps, type UseUIBridgeReturn, type UseUIComponentOptions, type UseUIComponentReturn, type UseUIElementOptions, type UseUIElementReturn, type UseUINavigationReturn, type UseUIStateGroupOptions, type UseUIStateGroupReturn, type UseUIStateOptions, type UseUIStateReturn, type UseUITransitionOptions, type UseUITransitionReturn, useActiveStates, useAutoRegister, useAvailableTransitions, useCanNavigateTo, useNavigationPath, useStateSnapshot, useTransitions, useUIBridge, useUIBridgeContext, useUIBridgeOptional, useUIBridgeRequired, useUIComponent, useUIComponentAction, useUIElement, useUIElementRef, useUINavigation, useUIState, useUIStateGroup, useUITransition };
|
|
800
|
+
export { type AutoRegisterOptions, AutoRegisterProvider, type AutoRegisterProviderProps, type ComponentActionDef, type ComputedPropertyDef, type IdStrategy, type UIBridgeContextValue, UIBridgeProvider, type UIBridgeProviderProps, type UseUIBridgeReturn, type UseUIComponentOptions, type UseUIComponentReturn, type UseUIElementOptions, type UseUIElementReturn, type UseUINavigationReturn, type UseUIStateGroupOptions, type UseUIStateGroupReturn, type UseUIStateOptions, type UseUIStateReturn, type UseUITransitionOptions, type UseUITransitionReturn, useActiveStates, useAutoRegister, useAvailableTransitions, useCanNavigateTo, useNavigationPath, useStateSnapshot, useTransitions, useUIBridge, useUIBridgeContext, useUIBridgeOptional, useUIBridgeRequired, useUIComponent, useUIComponentAction, useUIElement, useUIElementRef, useUINavigation, useUIState, useUIStateGroup, useUITransition };
|
package/dist/react/index.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import React$1, { ReactNode } from 'react';
|
|
3
|
-
import {
|
|
4
|
-
import { U as UIBridgeRegistry } from '../registry-
|
|
5
|
-
import {
|
|
3
|
+
import { D as UIBridgeFeatures, U as UIBridgeConfig, M as WSConnectionState, x as RegisteredElement, w as RegisteredComponent, l as BridgeSnapshot, k as BridgeEventType, j as BridgeEventListener, a9 as WSSubscriptionOptions, i as BridgeEvent, r as ElementType, S as StandardAction, o as CustomAction, q as ElementState, p as ElementIdentifier, af as Workflow, G as UIStateGroup, F as UIState, z as StateSnapshot, ag as WorkflowStep, T as TransitionResult, H as UITransition, N as NavigationResult, v as PathResult } from '../types-jKVgTI6_.js';
|
|
4
|
+
import { U as UIBridgeRegistry } from '../registry-BKLEm-yk.js';
|
|
5
|
+
import { UIBridgeWSClient } from '../core/index.js';
|
|
6
6
|
import { RenderLogManager } from '../render-log/index.js';
|
|
7
|
-
import { M as MetricsCollector } from '../metrics-
|
|
8
|
-
import { A as ActionExecutor, i as WorkflowEngine, b as ControlActionRequest, c as ControlActionResponse, C as ComponentActionRequest, a as ComponentActionResponse, F as FindRequest, g as FindResponse, j as WorkflowRunRequest, k as WorkflowRunResponse } from '../types-
|
|
7
|
+
import { M as MetricsCollector } from '../metrics-BfiT_rhZ.js';
|
|
8
|
+
import { A as ActionExecutor, i as WorkflowEngine, b as ControlActionRequest, c as ControlActionResponse, C as ComponentActionRequest, a as ComponentActionResponse, F as FindRequest, g as FindResponse, j as WorkflowRunRequest, k as WorkflowRunResponse } from '../types-BkNRILUa.js';
|
|
9
|
+
import '../types-DfPqwU-i.js';
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* UI Bridge context value
|
|
@@ -180,6 +181,15 @@ interface ComponentActionDef<TParams = unknown, TResult = unknown> {
|
|
|
180
181
|
/** Handler function */
|
|
181
182
|
handler: (params?: TParams) => TResult | Promise<TResult>;
|
|
182
183
|
}
|
|
184
|
+
/**
|
|
185
|
+
* Computed property definition for useUIComponent
|
|
186
|
+
*/
|
|
187
|
+
interface ComputedPropertyDef<T = unknown> {
|
|
188
|
+
/** Getter function for the computed value */
|
|
189
|
+
getter: () => T;
|
|
190
|
+
/** Description of what the computed property represents */
|
|
191
|
+
description?: string;
|
|
192
|
+
}
|
|
183
193
|
/**
|
|
184
194
|
* useUIComponent options
|
|
185
195
|
*/
|
|
@@ -196,6 +206,10 @@ interface UseUIComponentOptions {
|
|
|
196
206
|
elementIds?: string[];
|
|
197
207
|
/** Whether to automatically register on mount */
|
|
198
208
|
autoRegister?: boolean;
|
|
209
|
+
/** Function to get the current component state */
|
|
210
|
+
state?: () => Record<string, unknown>;
|
|
211
|
+
/** Computed properties exposed by the component */
|
|
212
|
+
computed?: Record<string, ComputedPropertyDef | (() => unknown)>;
|
|
199
213
|
}
|
|
200
214
|
/**
|
|
201
215
|
* useUIComponent return value
|
|
@@ -783,4 +797,4 @@ interface AutoRegisterProviderProps extends Omit<AutoRegisterOptions, 'root'> {
|
|
|
783
797
|
*/
|
|
784
798
|
declare function AutoRegisterProvider({ children, scopeToChildren, enabled, idStrategy, debounceMs, includeHidden, includeSelectors, excludeSelectors, generateId, onRegister, onUnregister, }: AutoRegisterProviderProps): react_jsx_runtime.JSX.Element;
|
|
785
799
|
|
|
786
|
-
export { type AutoRegisterOptions, AutoRegisterProvider, type AutoRegisterProviderProps, type ComponentActionDef, type IdStrategy, type UIBridgeContextValue, UIBridgeProvider, type UIBridgeProviderProps, type UseUIBridgeReturn, type UseUIComponentOptions, type UseUIComponentReturn, type UseUIElementOptions, type UseUIElementReturn, type UseUINavigationReturn, type UseUIStateGroupOptions, type UseUIStateGroupReturn, type UseUIStateOptions, type UseUIStateReturn, type UseUITransitionOptions, type UseUITransitionReturn, useActiveStates, useAutoRegister, useAvailableTransitions, useCanNavigateTo, useNavigationPath, useStateSnapshot, useTransitions, useUIBridge, useUIBridgeContext, useUIBridgeOptional, useUIBridgeRequired, useUIComponent, useUIComponentAction, useUIElement, useUIElementRef, useUINavigation, useUIState, useUIStateGroup, useUITransition };
|
|
800
|
+
export { type AutoRegisterOptions, AutoRegisterProvider, type AutoRegisterProviderProps, type ComponentActionDef, type ComputedPropertyDef, type IdStrategy, type UIBridgeContextValue, UIBridgeProvider, type UIBridgeProviderProps, type UseUIBridgeReturn, type UseUIComponentOptions, type UseUIComponentReturn, type UseUIElementOptions, type UseUIElementReturn, type UseUINavigationReturn, type UseUIStateGroupOptions, type UseUIStateGroupReturn, type UseUIStateOptions, type UseUIStateReturn, type UseUITransitionOptions, type UseUITransitionReturn, useActiveStates, useAutoRegister, useAvailableTransitions, useCanNavigateTo, useNavigationPath, useStateSnapshot, useTransitions, useUIBridge, useUIBridgeContext, useUIBridgeOptional, useUIBridgeRequired, useUIComponent, useUIComponentAction, useUIElement, useUIElementRef, useUINavigation, useUIState, useUIStateGroup, useUITransition };
|