ue-webui-bridge 1.0.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.
- package/README.md +189 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.cts +18 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +1 -0
- package/package.json +36 -0
package/README.md
ADDED
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# ue-webui-bridge
|
|
2
|
+
|
|
3
|
+
UE WebUI Bridge 核心库,提供 Unreal Engine 与 Web UI 之间的双向通信桥梁。
|
|
4
|
+
|
|
5
|
+
## 📦 安装
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install ue-webui-bridge
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 💡 推荐使用方式
|
|
12
|
+
|
|
13
|
+
**强烈推荐**搭配 [ue-webui-bridge-vite](https://www.npmjs.com/package/ue-webui-bridge-vite) 插件使用:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install ue-webui-bridge ue-webui-bridge-vite
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
使用 Vite 插件后,**无需手动初始化**,插件会自动处理所有配置和初始化工作。
|
|
20
|
+
|
|
21
|
+
**⚠️ 重要提示:** 如果你的项目使用了路由(如 Vue Router、React Router 等),**必须使用哈希模式(Hash Mode)**,而不是 History 模式。这是因为 UE WebUI 环境的限制。
|
|
22
|
+
|
|
23
|
+
如果不使用 Vite 或需要手动集成,请继续阅读下面的手动初始化说明。
|
|
24
|
+
|
|
25
|
+
## 🚀 快速开始
|
|
26
|
+
|
|
27
|
+
### 方式一:使用 Vite 插件(推荐)
|
|
28
|
+
|
|
29
|
+
在 `vite.config.ts` 中配置插件:
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
import { defineConfig } from 'vite';
|
|
33
|
+
import ueWebUiBridge from 'ue-webui-bridge-vite';
|
|
34
|
+
|
|
35
|
+
export default defineConfig({
|
|
36
|
+
plugins: [ueWebUiBridge()],
|
|
37
|
+
});
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
然后直接在代码中使用 API,**无需调用 `initUEBridge()`**:
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
import { sendToGame, registerGameInterface } from 'ue-webui-bridge';
|
|
44
|
+
|
|
45
|
+
// 直接使用,无需初始化
|
|
46
|
+
sendToGame('PlayerAction', { action: 'jump' });
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 方式二:手动初始化
|
|
50
|
+
|
|
51
|
+
如果不使用 Vite 插件,需要在应用入口处手动初始化:
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
import { initUEBridge } from 'ue-webui-bridge';
|
|
55
|
+
|
|
56
|
+
// 手动初始化 UE 桥接
|
|
57
|
+
initUEBridge();
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 发送消息到 UE
|
|
61
|
+
|
|
62
|
+
使用 `sendToGame` 向 Unreal Engine 发送消息:
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
import { sendToGame } from 'ue-webui-bridge';
|
|
66
|
+
|
|
67
|
+
// 发送简单事件
|
|
68
|
+
sendToGame('PlayerAction');
|
|
69
|
+
|
|
70
|
+
// 发送带数据的事件
|
|
71
|
+
sendToGame('UpdateScore', { score: 100, level: 5 });
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 接收来自 UE 的消息
|
|
75
|
+
|
|
76
|
+
使用 `registerGameInterface` 注册回调函数来接收 UE 发送的消息:
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
import { registerGameInterface, unregisterGameInterface } from 'ue-webui-bridge';
|
|
80
|
+
|
|
81
|
+
// 注册接口
|
|
82
|
+
registerGameInterface('OnGameStateChanged', (data) => {
|
|
83
|
+
console.log('游戏状态改变:', data);
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
// 取消注册
|
|
87
|
+
unregisterGameInterface('OnGameStateChanged');
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## 📖 API 文档
|
|
91
|
+
|
|
92
|
+
### `initUEBridge()`
|
|
93
|
+
|
|
94
|
+
初始化 UE WebUI 桥接。
|
|
95
|
+
|
|
96
|
+
**注意:**
|
|
97
|
+
|
|
98
|
+
- 使用 `ue-webui-bridge-vite` 插件时,**无需调用此方法**,插件会自动处理初始化
|
|
99
|
+
- 仅在手动集成时需要调用,且必须在应用启动时调用一次
|
|
100
|
+
|
|
101
|
+
**返回值:** `void`
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
### `sendToGame<T>(eventName: string, payload?: T): void`
|
|
106
|
+
|
|
107
|
+
向 Unreal Engine 发送消息。
|
|
108
|
+
|
|
109
|
+
**参数:**
|
|
110
|
+
|
|
111
|
+
- `eventName` - 事件名称
|
|
112
|
+
- `payload` - 可选的数据负载,会自动序列化为 JSON
|
|
113
|
+
|
|
114
|
+
**示例:**
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
sendToGame('PlayerJump');
|
|
118
|
+
sendToGame('UpdateInventory', { itemId: 123, count: 5 });
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
### `registerGameInterface<T>(funcName: string, handler: (data: T) => void): void`
|
|
124
|
+
|
|
125
|
+
注册一个接口函数,用于接收来自 UE 的调用。
|
|
126
|
+
|
|
127
|
+
**参数:**
|
|
128
|
+
|
|
129
|
+
- `funcName` - 函数名称,需要与 UE 端调用的名称一致
|
|
130
|
+
- `handler` - 处理函数,接收来自 UE 的数据
|
|
131
|
+
|
|
132
|
+
**示例:**
|
|
133
|
+
|
|
134
|
+
```typescript
|
|
135
|
+
registerGameInterface('OnPlayerDeath', (data) => {
|
|
136
|
+
console.log('玩家死亡:', data);
|
|
137
|
+
});
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
### `unregisterGameInterface(funcName: string): void`
|
|
143
|
+
|
|
144
|
+
取消注册接口函数。
|
|
145
|
+
|
|
146
|
+
**参数:**
|
|
147
|
+
|
|
148
|
+
- `funcName` - 要取消注册的函数名称
|
|
149
|
+
|
|
150
|
+
**示例:**
|
|
151
|
+
|
|
152
|
+
```typescript
|
|
153
|
+
unregisterGameInterface('OnPlayerDeath');
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## 🔧 工作原理
|
|
157
|
+
|
|
158
|
+
该库通过以下方式实现 Web UI 与 UE 的通信:
|
|
159
|
+
|
|
160
|
+
1. **初始化阶段**: 创建 `window.ue` 和 `window.ueBridge` 全局对象
|
|
161
|
+
2. **发送消息**: 使用 `ue.interface.broadcast` 或 URL hash 方式向 UE 发送消息
|
|
162
|
+
3. **接收消息**: UE 通过调用 `window.ue.interface` 上注册的函数来向 Web UI 发送消息
|
|
163
|
+
|
|
164
|
+
## 📝 TypeScript 支持
|
|
165
|
+
|
|
166
|
+
本库完全使用 TypeScript 编写,提供完整的类型定义:
|
|
167
|
+
|
|
168
|
+
```typescript
|
|
169
|
+
// 全局类型扩展
|
|
170
|
+
declare global {
|
|
171
|
+
interface Window {
|
|
172
|
+
ue: {
|
|
173
|
+
interface: {
|
|
174
|
+
broadcast: (name: string, data: string) => void;
|
|
175
|
+
[key: string]: any;
|
|
176
|
+
};
|
|
177
|
+
};
|
|
178
|
+
ueBridge: (name: string, data?: any) => void;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## 🔗 相关项目
|
|
184
|
+
|
|
185
|
+
- [ue-webui-bridge-vite](https://www.npmjs.com/package/ue-webui-bridge-vite) - Vite 插件,用于构建时自动集成(推荐)
|
|
186
|
+
|
|
187
|
+
## 📄 许可证
|
|
188
|
+
|
|
189
|
+
GPL-3.0 © kongziming
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var _0x4ed410=_0x5c5f;function _0x3cc8(){var _0x1ca15c=['ueBridge','string','9444323lXTPRH','ALcjS','[ue-webui-bridge]\x20未初始化,消息未发送:','location','JjdWR','1694076NSIGbe','getOwnPropertyNames','defineProperty','10zcygTu','ettPc','HamDO','bjeLc','OSKVW','14578940eqQzBx','8UlTmQV','584196YuoQjA','__esModule','2ezGgDu','hasOwnProperty','597972MLMFst','broadcast','prototype','121EwXTyv','895357xwSTCB','object','interface','3687678NXGxBI','exports','[ue-webui-bridge]\x20不可用,无法注册:','yhewW','stringify','ddVCS','function','log','warn','32SiAokw'];_0x3cc8=function(){return _0x1ca15c;};return _0x3cc8();}(function(_0x1f21ab,_0x4cbadb){var _0x3f6efa=_0x5c5f,_0x4c428e=_0x1f21ab();while(!![]){try{var _0x13d3bf=parseInt(_0x3f6efa(0x199))/0x1*(parseInt(_0x3f6efa(0x193))/0x2)+parseInt(_0x3f6efa(0x191))/0x3*(parseInt(_0x3f6efa(0x17f))/0x4)+parseInt(_0x3f6efa(0x18a))/0x5*(-parseInt(_0x3f6efa(0x187))/0x6)+-parseInt(_0x3f6efa(0x182))/0x7*(-parseInt(_0x3f6efa(0x190))/0x8)+-parseInt(_0x3f6efa(0x19c))/0x9+-parseInt(_0x3f6efa(0x18f))/0xa+parseInt(_0x3f6efa(0x198))/0xb*(-parseInt(_0x3f6efa(0x195))/0xc);if(_0x13d3bf===_0x4cbadb)break;else _0x4c428e['push'](_0x4c428e['shift']());}catch(_0x2fcae3){_0x4c428e['push'](_0x4c428e['shift']());}}}(_0x3cc8,0xc8aad));function _0x5c5f(_0x53553b,_0x39c051){_0x53553b=_0x53553b-0x177;var _0x3cc818=_0x3cc8();var _0x5c5f13=_0x3cc818[_0x53553b];return _0x5c5f13;}var __defProp=Object[_0x4ed410(0x189)],__getOwnPropDesc=Object['getOwnPropertyDescriptor'],__getOwnPropNames=Object[_0x4ed410(0x188)],__hasOwnProp=Object[_0x4ed410(0x197)][_0x4ed410(0x194)],__export=(_0x27f347,_0x6af6b0)=>{var _0x4bae03={'Zagdj':function(_0x3abb61,_0x542e56,_0x9408c7,_0x1349eb){return _0x3abb61(_0x542e56,_0x9408c7,_0x1349eb);}};for(var _0x1602ab in _0x6af6b0)_0x4bae03['Zagdj'](__defProp,_0x27f347,_0x1602ab,{'get':_0x6af6b0[_0x1602ab],'enumerable':!![]});},__copyProps=(_0x19e8c8,_0x25999a,_0x4ebc8f,_0x57437e)=>{var _0x2b2688=_0x4ed410,_0x20d9a2={'bjeLc':function(_0x2ef281,_0x356901){return _0x2ef281===_0x356901;},'ettPc':_0x2b2688(0x17c),'bvqeO':function(_0x3fbcc2,_0x510fbb){return _0x3fbcc2(_0x510fbb);},'nfomK':function(_0x32ad08,_0x3d7bc6){return _0x32ad08!==_0x3d7bc6;}};if(_0x25999a&&_0x20d9a2[_0x2b2688(0x18d)](typeof _0x25999a,'object')||_0x20d9a2['bjeLc'](typeof _0x25999a,_0x20d9a2[_0x2b2688(0x18b)])){for(let _0x25b422 of _0x20d9a2['bvqeO'](__getOwnPropNames,_0x25999a))if(!__hasOwnProp['call'](_0x19e8c8,_0x25b422)&&_0x20d9a2['nfomK'](_0x25b422,_0x4ebc8f))__defProp(_0x19e8c8,_0x25b422,{'get':()=>_0x25999a[_0x25b422],'enumerable':!(_0x57437e=__getOwnPropDesc(_0x25999a,_0x25b422))||_0x57437e['enumerable']});}return _0x19e8c8;},__toCommonJS=_0x320cb1=>__copyProps(__defProp({},_0x4ed410(0x192),{'value':!![]}),_0x320cb1),index_exports={};__export(index_exports,{'initUEBridge':()=>initUEBridge,'registerGameInterface':()=>registerGameInterface,'sendToGame':()=>sendToGame,'unregisterGameInterface':()=>unregisterGameInterface}),module[_0x4ed410(0x177)]=__toCommonJS(index_exports);function initUEBridge(){var _0x3280a2=_0x4ed410,_0x5535c2={'ddVCS':function(_0x4fd1b2,_0x1c6fd7){return _0x4fd1b2!==_0x1c6fd7;},'OSKVW':_0x3280a2(0x181),'HamDO':function(_0x4afae9,_0x22d944){return _0x4afae9!==_0x22d944;},'yhewW':_0x3280a2(0x17c),'JjdWR':function(_0x36d899,_0x110928){return _0x36d899(_0x110928);},'dZctv':function(_0x48bf53,_0x162171){return _0x48bf53(_0x162171);}};_0x5535c2[_0x3280a2(0x18c)](typeof window['ue'],_0x3280a2(0x19a))&&(window['ue']={'interface':{'broadcast':()=>{}}});const _0x486355=window['ue'][_0x3280a2(0x19b)];window[_0x3280a2(0x180)]=function(_0x305dd0,_0x5d2d39){var _0x1f9eb9=_0x3280a2;if(_0x5535c2[_0x1f9eb9(0x17b)](typeof _0x305dd0,_0x5535c2[_0x1f9eb9(0x18e)]))return;const _0x5cbdd2=_0x5535c2['ddVCS'](_0x5d2d39,void 0x0)?JSON[_0x1f9eb9(0x17a)](_0x5d2d39):'';if(_0x5535c2[_0x1f9eb9(0x18c)](typeof _0x486355[_0x1f9eb9(0x196)],_0x5535c2[_0x1f9eb9(0x179)])){const _0x22f33b=[_0x305dd0,_0x5cbdd2],_0x19c505=_0x5535c2[_0x1f9eb9(0x186)](encodeURIComponent,JSON['stringify'](_0x22f33b));window['location']['hash']=_0x19c505,window[_0x1f9eb9(0x185)]['hash']=_0x5535c2['dZctv'](encodeURIComponent,'[]');}else _0x486355[_0x1f9eb9(0x196)](_0x305dd0,_0x5cbdd2);};}var sendToGame=(_0x450026,_0x47173e)=>{var _0x2af831=_0x4ed410,_0x534313={'ZyDzk':'sendToGame'};window['ueBridge']?(console[_0x2af831(0x17d)](_0x534313['ZyDzk'],_0x450026,_0x47173e),window[_0x2af831(0x180)](_0x450026,_0x47173e)):console[_0x2af831(0x17e)](_0x2af831(0x184),_0x450026);},registerGameInterface=(_0x3e4d5f,_0x4c1b13)=>{var _0x41fb8f=_0x4ed410,_0x1aa918={'ALcjS':_0x41fb8f(0x178)};window['ue']&&window['ue'][_0x41fb8f(0x19b)]?window['ue']['interface'][_0x3e4d5f]=_0x4c1b13:console['warn'](_0x1aa918[_0x41fb8f(0x183)],_0x3e4d5f);},unregisterGameInterface=_0x4a373f=>{var _0x15200d=_0x4ed410;window['ue']&&window['ue'][_0x15200d(0x19b)]&&delete window['ue'][_0x15200d(0x19b)][_0x4a373f];};0x0&&(module[_0x4ed410(0x177)]={'initUEBridge':initUEBridge,'registerGameInterface':registerGameInterface,'sendToGame':sendToGame,'unregisterGameInterface':unregisterGameInterface});
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
declare function initUEBridge(): void;
|
|
2
|
+
declare const sendToGame: <T = any>(eventName: string, payload?: T) => void;
|
|
3
|
+
declare const registerGameInterface: <T = any>(funcName: string, handler: (data: T) => void) => void;
|
|
4
|
+
declare const unregisterGameInterface: (funcName: string) => void;
|
|
5
|
+
|
|
6
|
+
declare global {
|
|
7
|
+
interface Window {
|
|
8
|
+
ue: {
|
|
9
|
+
interface: {
|
|
10
|
+
broadcast: (name: string, data: string) => void;
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
ueBridge: (name: string, data?: any) => void;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { initUEBridge, registerGameInterface, sendToGame, unregisterGameInterface };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
declare function initUEBridge(): void;
|
|
2
|
+
declare const sendToGame: <T = any>(eventName: string, payload?: T) => void;
|
|
3
|
+
declare const registerGameInterface: <T = any>(funcName: string, handler: (data: T) => void) => void;
|
|
4
|
+
declare const unregisterGameInterface: (funcName: string) => void;
|
|
5
|
+
|
|
6
|
+
declare global {
|
|
7
|
+
interface Window {
|
|
8
|
+
ue: {
|
|
9
|
+
interface: {
|
|
10
|
+
broadcast: (name: string, data: string) => void;
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
ueBridge: (name: string, data?: any) => void;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { initUEBridge, registerGameInterface, sendToGame, unregisterGameInterface };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function(_0x1d82da,_0x415d90){const _0x969d13=_0x16bb,_0x4670a2=_0x1d82da();while(!![]){try{const _0x5c671e=parseInt(_0x969d13(0x12a))/0x1*(-parseInt(_0x969d13(0x127))/0x2)+-parseInt(_0x969d13(0x12d))/0x3+parseInt(_0x969d13(0x133))/0x4*(-parseInt(_0x969d13(0x130))/0x5)+parseInt(_0x969d13(0x12c))/0x6+parseInt(_0x969d13(0x131))/0x7+-parseInt(_0x969d13(0x134))/0x8*(parseInt(_0x969d13(0x11b))/0x9)+parseInt(_0x969d13(0x132))/0xa;if(_0x5c671e===_0x415d90)break;else _0x4670a2['push'](_0x4670a2['shift']());}catch(_0x3456f9){_0x4670a2['push'](_0x4670a2['shift']());}}}(_0xca46,0xf141c));function initUEBridge(){const _0x11f178=_0x16bb,_0x16d913={'Jxfru':function(_0x1a9dbe,_0x3cd63a){return _0x1a9dbe!==_0x3cd63a;},'sogHm':'string','wmCVT':function(_0xeb16f4,_0x4eeeb3){return _0xeb16f4!==_0x4eeeb3;},'yexgV':'function','GopcB':function(_0x18e578,_0x18f913){return _0x18e578(_0x18f913);},'GAyqw':function(_0x4c9b2d,_0x4ec0a5){return _0x4c9b2d(_0x4ec0a5);},'hffzN':_0x11f178(0x11a)};typeof window['ue']!==_0x16d913[_0x11f178(0x12b)]&&(window['ue']={'interface':{'broadcast':()=>{}}});const _0x5f5bba=window['ue'][_0x11f178(0x11e)];window[_0x11f178(0x12f)]=function(_0x57975d,_0x448b41){const _0x2837e8=_0x11f178;if(_0x16d913[_0x2837e8(0x124)](typeof _0x57975d,_0x16d913[_0x2837e8(0x121)]))return;const _0x886f69=_0x448b41!==void 0x0?JSON[_0x2837e8(0x126)](_0x448b41):'';if(_0x16d913[_0x2837e8(0x11c)](typeof _0x5f5bba[_0x2837e8(0x122)],_0x16d913[_0x2837e8(0x119)])){const _0x504242=[_0x57975d,_0x886f69],_0x4f0f8d=_0x16d913['GopcB'](encodeURIComponent,JSON[_0x2837e8(0x126)](_0x504242));window[_0x2837e8(0x123)][_0x2837e8(0x129)]=_0x4f0f8d,window[_0x2837e8(0x123)][_0x2837e8(0x129)]=_0x16d913['GAyqw'](encodeURIComponent,'[]');}else _0x5f5bba[_0x2837e8(0x122)](_0x57975d,_0x886f69);};}var sendToGame=(_0x1f1051,_0xa05b7e)=>{const _0x56a6fb=_0x16bb,_0x51c6d8={'CZFCP':_0x56a6fb(0x11d),'tGtsS':_0x56a6fb(0x11f)};window[_0x56a6fb(0x12f)]?(console[_0x56a6fb(0x125)](_0x51c6d8[_0x56a6fb(0x135)],_0x1f1051,_0xa05b7e),window[_0x56a6fb(0x12f)](_0x1f1051,_0xa05b7e)):console[_0x56a6fb(0x12e)](_0x51c6d8[_0x56a6fb(0x128)],_0x1f1051);},registerGameInterface=(_0x7b938f,_0x44ffeb)=>{const _0x18cf5e=_0x16bb,_0x441130={'YWZEO':'[ue-webui-bridge]\x20不可用,无法注册:'};window['ue']&&window['ue'][_0x18cf5e(0x11e)]?window['ue'][_0x18cf5e(0x11e)][_0x7b938f]=_0x44ffeb:console[_0x18cf5e(0x12e)](_0x441130[_0x18cf5e(0x120)],_0x7b938f);},unregisterGameInterface=_0x22c66a=>{const _0x538bbc=_0x16bb;window['ue']&&window['ue'][_0x538bbc(0x11e)]&&delete window['ue'][_0x538bbc(0x11e)][_0x22c66a];};export{initUEBridge,registerGameInterface,sendToGame,unregisterGameInterface};function _0x16bb(_0x58f485,_0xba2239){_0x58f485=_0x58f485-0x119;const _0xca46ad=_0xca46();let _0x16bb62=_0xca46ad[_0x58f485];return _0x16bb62;}function _0xca46(){const _0x1b6449=['warn','ueBridge','15HAaCjx','6564054nMUEXY','49808020KHYwmQ','1369404JGtvLI','225328tkMxJP','CZFCP','yexgV','object','468TpGXrK','wmCVT','sendToGame','interface','[ue-webui-bridge]\x20未初始化,消息未发送:','YWZEO','sogHm','broadcast','location','Jxfru','log','stringify','2OxXbOV','tGtsS','hash','1462521xToeyb','hffzN','4368990XzgNwU','5112885AeNkxa'];_0xca46=function(){return _0x1b6449;};return _0xca46();}
|
package/package.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ue-webui-bridge",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "UE WebUI Bridge - A bidirectional communication bridge between Unreal Engine and Web UI",
|
|
5
|
+
"main": "dist/index.cjs",
|
|
6
|
+
"module": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"require": "./dist/index.cjs"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsup && node ../obfuscate.js",
|
|
20
|
+
"prepublishOnly": "npm run build"
|
|
21
|
+
},
|
|
22
|
+
"keywords": [
|
|
23
|
+
"unreal-engine",
|
|
24
|
+
"ue",
|
|
25
|
+
"webui"
|
|
26
|
+
],
|
|
27
|
+
"author": "kongziming",
|
|
28
|
+
"license": "GPL-3.0",
|
|
29
|
+
"type": "module",
|
|
30
|
+
"engines": {
|
|
31
|
+
"node": ">=16.0.0"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"tsup": "^8.5.1"
|
|
35
|
+
}
|
|
36
|
+
}
|