green-screen-proxy 0.3.0 → 1.0.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/README.md +98 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +23 -4
- package/dist/cli.js.map +1 -0
- package/dist/deploy.d.ts +2 -0
- package/dist/deploy.d.ts.map +1 -0
- package/dist/deploy.js +252 -0
- package/dist/deploy.js.map +1 -0
- package/dist/hp6530/connection.d.ts +1 -0
- package/dist/hp6530/connection.d.ts.map +1 -0
- package/dist/hp6530/connection.js +1 -0
- package/dist/hp6530/connection.js.map +1 -0
- package/dist/hp6530/constants.d.ts +1 -0
- package/dist/hp6530/constants.d.ts.map +1 -0
- package/dist/hp6530/constants.js +1 -0
- package/dist/hp6530/constants.js.map +1 -0
- package/dist/hp6530/encoder.d.ts +1 -0
- package/dist/hp6530/encoder.d.ts.map +1 -0
- package/dist/hp6530/encoder.js +1 -0
- package/dist/hp6530/encoder.js.map +1 -0
- package/dist/hp6530/parser.d.ts +1 -0
- package/dist/hp6530/parser.d.ts.map +1 -0
- package/dist/hp6530/parser.js +17 -15
- package/dist/hp6530/parser.js.map +1 -0
- package/dist/hp6530/screen.d.ts +1 -0
- package/dist/hp6530/screen.d.ts.map +1 -0
- package/dist/hp6530/screen.js +1 -0
- package/dist/hp6530/screen.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +81 -0
- package/dist/index.js.map +1 -0
- package/dist/mock/mock-routes.d.ts +1 -0
- package/dist/mock/mock-routes.d.ts.map +1 -0
- package/dist/mock/mock-routes.js +1 -0
- package/dist/mock/mock-routes.js.map +1 -0
- package/dist/protocols/hp6530-handler.d.ts +3 -1
- package/dist/protocols/hp6530-handler.d.ts.map +1 -0
- package/dist/protocols/hp6530-handler.js +1 -0
- package/dist/protocols/hp6530-handler.js.map +1 -0
- package/dist/protocols/index.d.ts +5 -2
- package/dist/protocols/index.d.ts.map +1 -0
- package/dist/protocols/index.js +1 -0
- package/dist/protocols/index.js.map +1 -0
- package/dist/protocols/tn3270-handler.d.ts +3 -1
- package/dist/protocols/tn3270-handler.d.ts.map +1 -0
- package/dist/protocols/tn3270-handler.js +1 -0
- package/dist/protocols/tn3270-handler.js.map +1 -0
- package/dist/protocols/tn5250-handler.d.ts +25 -1
- package/dist/protocols/tn5250-handler.d.ts.map +1 -0
- package/dist/protocols/tn5250-handler.js +150 -1
- package/dist/protocols/tn5250-handler.js.map +1 -0
- package/dist/protocols/types.d.ts +3 -23
- package/dist/protocols/types.d.ts.map +1 -0
- package/dist/protocols/types.js +1 -0
- package/dist/protocols/types.js.map +1 -0
- package/dist/protocols/vt-handler.d.ts +3 -1
- package/dist/protocols/vt-handler.d.ts.map +1 -0
- package/dist/protocols/vt-handler.js +1 -0
- package/dist/protocols/vt-handler.js.map +1 -0
- package/dist/routes.d.ts +1 -0
- package/dist/routes.d.ts.map +1 -0
- package/dist/routes.js +1 -0
- package/dist/routes.js.map +1 -0
- package/dist/server.d.ts +1 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +13 -28
- package/dist/server.js.map +1 -0
- package/dist/session.d.ts +5 -10
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +1 -0
- package/dist/session.js.map +1 -0
- package/dist/standalone.d.ts +3 -0
- package/dist/standalone.d.ts.map +1 -0
- package/dist/standalone.js +6 -0
- package/dist/standalone.js.map +1 -0
- package/dist/tn3270/connection.d.ts +1 -0
- package/dist/tn3270/connection.d.ts.map +1 -0
- package/dist/tn3270/connection.js +1 -0
- package/dist/tn3270/connection.js.map +1 -0
- package/dist/tn3270/constants.d.ts +1 -0
- package/dist/tn3270/constants.d.ts.map +1 -0
- package/dist/tn3270/constants.js +1 -0
- package/dist/tn3270/constants.js.map +1 -0
- package/dist/tn3270/encoder.d.ts +1 -0
- package/dist/tn3270/encoder.d.ts.map +1 -0
- package/dist/tn3270/encoder.js +1 -0
- package/dist/tn3270/encoder.js.map +1 -0
- package/dist/tn3270/parser.d.ts +1 -0
- package/dist/tn3270/parser.d.ts.map +1 -0
- package/dist/tn3270/parser.js +1 -0
- package/dist/tn3270/parser.js.map +1 -0
- package/dist/tn3270/screen.d.ts +1 -0
- package/dist/tn3270/screen.d.ts.map +1 -0
- package/dist/tn3270/screen.js +1 -0
- package/dist/tn3270/screen.js.map +1 -0
- package/dist/tn5250/connection.d.ts +1 -0
- package/dist/tn5250/connection.d.ts.map +1 -0
- package/dist/tn5250/connection.js +7 -8
- package/dist/tn5250/connection.js.map +1 -0
- package/dist/tn5250/constants.d.ts +1 -0
- package/dist/tn5250/constants.d.ts.map +1 -0
- package/dist/tn5250/constants.js +1 -0
- package/dist/tn5250/constants.js.map +1 -0
- package/dist/tn5250/ebcdic.d.ts +2 -0
- package/dist/tn5250/ebcdic.d.ts.map +1 -0
- package/dist/tn5250/ebcdic.js +25 -0
- package/dist/tn5250/ebcdic.js.map +1 -0
- package/dist/tn5250/encoder.d.ts +10 -1
- package/dist/tn5250/encoder.d.ts.map +1 -0
- package/dist/tn5250/encoder.js +17 -19
- package/dist/tn5250/encoder.js.map +1 -0
- package/dist/tn5250/parser.d.ts +31 -5
- package/dist/tn5250/parser.d.ts.map +1 -0
- package/dist/tn5250/parser.js +234 -79
- package/dist/tn5250/parser.js.map +1 -0
- package/dist/tn5250/screen.d.ts +12 -0
- package/dist/tn5250/screen.d.ts.map +1 -0
- package/dist/tn5250/screen.js +29 -2
- package/dist/tn5250/screen.js.map +1 -0
- package/dist/vt/connection.d.ts +1 -0
- package/dist/vt/connection.d.ts.map +1 -0
- package/dist/vt/connection.js +1 -0
- package/dist/vt/connection.js.map +1 -0
- package/dist/vt/constants.d.ts +1 -0
- package/dist/vt/constants.d.ts.map +1 -0
- package/dist/vt/constants.js +1 -0
- package/dist/vt/constants.js.map +1 -0
- package/dist/vt/encoder.d.ts +1 -0
- package/dist/vt/encoder.d.ts.map +1 -0
- package/dist/vt/encoder.js +1 -0
- package/dist/vt/encoder.js.map +1 -0
- package/dist/vt/parser.d.ts +1 -0
- package/dist/vt/parser.d.ts.map +1 -0
- package/dist/vt/parser.js +35 -33
- package/dist/vt/parser.js.map +1 -0
- package/dist/vt/screen.d.ts +1 -0
- package/dist/vt/screen.d.ts.map +1 -0
- package/dist/vt/screen.js +1 -0
- package/dist/vt/screen.js.map +1 -0
- package/dist/websocket.d.ts +1 -0
- package/dist/websocket.d.ts.map +1 -0
- package/dist/websocket.js +241 -14
- package/dist/websocket.js.map +1 -0
- package/package.json +9 -6
package/dist/websocket.js
CHANGED
|
@@ -1,30 +1,255 @@
|
|
|
1
1
|
import { WebSocketServer, WebSocket } from 'ws';
|
|
2
2
|
import { URL } from 'url';
|
|
3
|
-
import { getSession, getDefaultSession } from './session.js';
|
|
3
|
+
import { createSession, getSession, getDefaultSession, destroySession, } from './session.js';
|
|
4
|
+
import { TN5250Handler } from './protocols/tn5250-handler.js';
|
|
4
5
|
const clients = new Set();
|
|
6
|
+
const sessionClients = new Map();
|
|
7
|
+
const unassignedClients = new Set();
|
|
8
|
+
function indexClient(client) {
|
|
9
|
+
if (client.sessionId) {
|
|
10
|
+
let set = sessionClients.get(client.sessionId);
|
|
11
|
+
if (!set) {
|
|
12
|
+
set = new Set();
|
|
13
|
+
sessionClients.set(client.sessionId, set);
|
|
14
|
+
}
|
|
15
|
+
set.add(client);
|
|
16
|
+
unassignedClients.delete(client);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
unassignedClients.add(client);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function removeClient(client) {
|
|
23
|
+
clients.delete(client);
|
|
24
|
+
unassignedClients.delete(client);
|
|
25
|
+
if (client.sessionId) {
|
|
26
|
+
const set = sessionClients.get(client.sessionId);
|
|
27
|
+
if (set) {
|
|
28
|
+
set.delete(client);
|
|
29
|
+
if (set.size === 0)
|
|
30
|
+
sessionClients.delete(client.sessionId);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function waitForScreen(session, timeoutMs) {
|
|
35
|
+
return new Promise((resolve) => {
|
|
36
|
+
const timer = setTimeout(() => resolve(session.getScreenData()), timeoutMs);
|
|
37
|
+
session.once('screenChange', (data) => {
|
|
38
|
+
clearTimeout(timer);
|
|
39
|
+
resolve(data);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Wait until the screen has at least `minFields` input fields, or timeout.
|
|
45
|
+
* This handles the case where the host sends CLEAR_UNIT + WTD as separate
|
|
46
|
+
* records — the first screenChange (from CLEAR_UNIT) has no fields, but
|
|
47
|
+
* the second (from WTD) has the actual sign-in fields.
|
|
48
|
+
*/
|
|
49
|
+
function waitForScreenWithFields(session, minFields, timeoutMs) {
|
|
50
|
+
return new Promise((resolve) => {
|
|
51
|
+
const timer = setTimeout(() => resolve(session.getScreenData()), timeoutMs);
|
|
52
|
+
const check = (data) => {
|
|
53
|
+
const inputFields = (data.fields || []).filter((f) => f.is_input);
|
|
54
|
+
if (inputFields.length >= minFields) {
|
|
55
|
+
clearTimeout(timer);
|
|
56
|
+
session.removeListener('screenChange', check);
|
|
57
|
+
resolve(data);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
// Check current state first
|
|
61
|
+
const current = session.getScreenData();
|
|
62
|
+
const currentInputs = (current.fields || []).filter((f) => f.is_input);
|
|
63
|
+
if (currentInputs.length >= minFields) {
|
|
64
|
+
clearTimeout(timer);
|
|
65
|
+
resolve(current);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
session.on('screenChange', check);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
5
71
|
export function setupWebSocket(server) {
|
|
6
72
|
const wss = new WebSocketServer({ server, path: '/ws' });
|
|
7
73
|
wss.on('connection', (ws, req) => {
|
|
8
|
-
// Extract sessionId from query params
|
|
9
74
|
const url = new URL(req.url || '/', `http://${req.headers.host || 'localhost'}`);
|
|
10
75
|
const sessionId = url.searchParams.get('sessionId');
|
|
11
76
|
const client = { ws, sessionId };
|
|
12
77
|
clients.add(client);
|
|
78
|
+
indexClient(client);
|
|
13
79
|
ws.on('close', () => {
|
|
14
|
-
|
|
80
|
+
removeClient(client);
|
|
15
81
|
});
|
|
16
82
|
ws.on('error', () => {
|
|
17
|
-
|
|
83
|
+
removeClient(client);
|
|
84
|
+
});
|
|
85
|
+
// Handle incoming commands (bidirectional protocol)
|
|
86
|
+
ws.on('message', async (raw) => {
|
|
87
|
+
try {
|
|
88
|
+
const msg = JSON.parse(typeof raw === 'string' ? raw : raw.toString());
|
|
89
|
+
await handleWsCommand(ws, client, msg);
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
wsSend(ws, { type: 'error', message: err instanceof Error ? err.message : String(err) });
|
|
93
|
+
}
|
|
18
94
|
});
|
|
19
95
|
// Send current screen immediately if a session is available
|
|
20
96
|
const session = sessionId ? getSession(sessionId) : getDefaultSession();
|
|
21
97
|
if (session && session.status.connected) {
|
|
22
|
-
ws
|
|
23
|
-
ws
|
|
98
|
+
wsSend(ws, { type: 'screen', data: session.getScreenData() });
|
|
99
|
+
wsSend(ws, { type: 'status', data: session.status });
|
|
24
100
|
}
|
|
25
101
|
});
|
|
26
102
|
return wss;
|
|
27
103
|
}
|
|
104
|
+
/** Handle an incoming WebSocket command from the client */
|
|
105
|
+
async function handleWsCommand(ws, client, msg) {
|
|
106
|
+
switch (msg.type) {
|
|
107
|
+
case 'connect': {
|
|
108
|
+
const { host = 'pub400.com', port = 23, protocol = 'tn5250', username, password } = msg;
|
|
109
|
+
const session = createSession(protocol);
|
|
110
|
+
// Update client's session assignment and re-index
|
|
111
|
+
const oldSessionId = client.sessionId;
|
|
112
|
+
client.sessionId = session.id;
|
|
113
|
+
if (oldSessionId) {
|
|
114
|
+
const set = sessionClients.get(oldSessionId);
|
|
115
|
+
if (set) {
|
|
116
|
+
set.delete(client);
|
|
117
|
+
if (set.size === 0)
|
|
118
|
+
sessionClients.delete(oldSessionId);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
unassignedClients.delete(client);
|
|
122
|
+
indexClient(client);
|
|
123
|
+
bindSessionToWebSocket(session);
|
|
124
|
+
wsSend(ws, { type: 'status', data: { connected: false, status: 'connecting', protocol, host } });
|
|
125
|
+
try {
|
|
126
|
+
await session.connect(host, port);
|
|
127
|
+
wsSend(ws, { type: 'status', data: { connected: true, status: 'connected', protocol, host } });
|
|
128
|
+
// Auto-sign-in: if credentials were provided, wait for sign-in fields
|
|
129
|
+
// then fill and submit atomically on the proxy side (no client round-trips).
|
|
130
|
+
// Screen updates are handled by bindSessionToWebSocket broadcast — no
|
|
131
|
+
// explicit screen sends here to avoid stale data overwriting broadcast updates
|
|
132
|
+
// (host often sends CLEAR_UNIT + WTD as separate records).
|
|
133
|
+
if (username && password && session.handler instanceof TN5250Handler) {
|
|
134
|
+
await waitForScreenWithFields(session, 2, 5000);
|
|
135
|
+
const handler = session.handler;
|
|
136
|
+
const ok = handler.autoSignIn(username, password);
|
|
137
|
+
if (ok) {
|
|
138
|
+
// Wait for the host's response (confirmation screen or menu).
|
|
139
|
+
await waitForScreen(session, 10000);
|
|
140
|
+
// Restore the username on the confirmation screen — CLEAR_UNIT
|
|
141
|
+
// wipes the buffer, but the user expects their typed value to
|
|
142
|
+
// persist on the sign-on confirmation form.
|
|
143
|
+
handler.restoreFields();
|
|
144
|
+
wsSend(ws, { type: 'screen', data: session.getScreenData() });
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
await waitForScreen(session, 5000);
|
|
149
|
+
}
|
|
150
|
+
wsSend(ws, { type: 'connected', sessionId: session.id });
|
|
151
|
+
}
|
|
152
|
+
catch (err) {
|
|
153
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
154
|
+
wsSend(ws, { type: 'error', message });
|
|
155
|
+
wsSend(ws, { type: 'status', data: { connected: false, status: 'error', protocol, host, error: message } });
|
|
156
|
+
}
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
case 'text': {
|
|
160
|
+
const session = resolveSession(client);
|
|
161
|
+
if (!session) {
|
|
162
|
+
wsSend(ws, { type: 'error', message: 'Not connected' });
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
session.sendText(msg.text);
|
|
166
|
+
// Broadcast handles screen updates for remote changes;
|
|
167
|
+
// for local text insertion, send current state immediately
|
|
168
|
+
wsSend(ws, { type: 'screen', data: session.getScreenData() });
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
case 'key': {
|
|
172
|
+
const session = resolveSession(client);
|
|
173
|
+
if (!session) {
|
|
174
|
+
wsSend(ws, { type: 'error', message: 'Not connected' });
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const localKeys = ['Tab', 'Backtab', 'TAB', 'BACKTAB'];
|
|
178
|
+
const ok = session.sendKey(msg.key);
|
|
179
|
+
if (!ok) {
|
|
180
|
+
wsSend(ws, { type: 'error', message: `Unknown key: ${msg.key}` });
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
if (localKeys.includes(msg.key)) {
|
|
184
|
+
// Local cursor movement — send immediately, no server round-trip
|
|
185
|
+
wsSend(ws, { type: 'screen', data: session.getScreenData() });
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
// Wait for the host's response, then send the latest screen state.
|
|
189
|
+
// Using getScreenData() instead of the waitForScreen result avoids
|
|
190
|
+
// sending a stale CLEAR_UNIT snapshot when the host sends multiple
|
|
191
|
+
// records (CLEAR_UNIT + WTD) — by the time await resumes, both
|
|
192
|
+
// records have been processed.
|
|
193
|
+
await waitForScreen(session, 3000);
|
|
194
|
+
wsSend(ws, { type: 'screen', data: session.getScreenData() });
|
|
195
|
+
}
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
case 'reattach': {
|
|
199
|
+
const { sessionId } = msg;
|
|
200
|
+
const session = sessionId ? getSession(sessionId) : undefined;
|
|
201
|
+
if (session && session.status.connected) {
|
|
202
|
+
// Reassign this client to the existing session
|
|
203
|
+
const oldSessionId = client.sessionId;
|
|
204
|
+
client.sessionId = session.id;
|
|
205
|
+
if (oldSessionId) {
|
|
206
|
+
const set = sessionClients.get(oldSessionId);
|
|
207
|
+
if (set) {
|
|
208
|
+
set.delete(client);
|
|
209
|
+
if (set.size === 0)
|
|
210
|
+
sessionClients.delete(oldSessionId);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
unassignedClients.delete(client);
|
|
214
|
+
indexClient(client);
|
|
215
|
+
bindSessionToWebSocket(session);
|
|
216
|
+
wsSend(ws, { type: 'screen', data: session.getScreenData() });
|
|
217
|
+
wsSend(ws, { type: 'status', data: session.status });
|
|
218
|
+
wsSend(ws, { type: 'connected', sessionId: session.id });
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
wsSend(ws, { type: 'error', message: 'Session not found or disconnected' });
|
|
222
|
+
}
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
case 'disconnect': {
|
|
226
|
+
const session = resolveSession(client);
|
|
227
|
+
if (session) {
|
|
228
|
+
destroySession(session.id);
|
|
229
|
+
const set = sessionClients.get(session.id);
|
|
230
|
+
if (set) {
|
|
231
|
+
set.delete(client);
|
|
232
|
+
if (set.size === 0)
|
|
233
|
+
sessionClients.delete(session.id);
|
|
234
|
+
}
|
|
235
|
+
client.sessionId = null;
|
|
236
|
+
unassignedClients.add(client);
|
|
237
|
+
}
|
|
238
|
+
wsSend(ws, { type: 'status', data: { connected: false, status: 'disconnected' } });
|
|
239
|
+
break;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
function resolveSession(client) {
|
|
244
|
+
if (client.sessionId)
|
|
245
|
+
return getSession(client.sessionId);
|
|
246
|
+
return getDefaultSession();
|
|
247
|
+
}
|
|
248
|
+
function wsSend(ws, data) {
|
|
249
|
+
if (ws.readyState === WebSocket.OPEN) {
|
|
250
|
+
ws.send(JSON.stringify(data));
|
|
251
|
+
}
|
|
252
|
+
}
|
|
28
253
|
/** Subscribe to a session's events and push to connected WS clients */
|
|
29
254
|
export function bindSessionToWebSocket(session) {
|
|
30
255
|
session.on('screenChange', (screenData) => {
|
|
@@ -37,14 +262,16 @@ export function bindSessionToWebSocket(session) {
|
|
|
37
262
|
});
|
|
38
263
|
}
|
|
39
264
|
function broadcastToSession(sessionId, message) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
// 2. Not bound to any session (will receive from default/single session)
|
|
46
|
-
if (client.sessionId === sessionId || client.sessionId === null) {
|
|
47
|
-
client.ws.send(message);
|
|
265
|
+
const targets = sessionClients.get(sessionId);
|
|
266
|
+
if (targets) {
|
|
267
|
+
for (const client of targets) {
|
|
268
|
+
if (client.ws.readyState === WebSocket.OPEN)
|
|
269
|
+
client.ws.send(message);
|
|
48
270
|
}
|
|
49
271
|
}
|
|
272
|
+
for (const client of unassignedClients) {
|
|
273
|
+
if (client.ws.readyState === WebSocket.OPEN)
|
|
274
|
+
client.ws.send(message);
|
|
275
|
+
}
|
|
50
276
|
}
|
|
277
|
+
//# sourceMappingURL=websocket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "green-screen-proxy",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "WebSocket/REST proxy server for green-screen-react — connects browsers to TN5250, TN3270, VT220, and HP 6530 hosts over TCP",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
|
-
"green-screen-proxy": "dist/cli.js"
|
|
7
|
+
"green-screen-proxy": "dist/cli.js",
|
|
8
|
+
"green-screen": "dist/standalone.js"
|
|
8
9
|
},
|
|
9
|
-
"main": "dist/
|
|
10
|
+
"main": "dist/index.js",
|
|
10
11
|
"files": [
|
|
11
12
|
"dist"
|
|
12
13
|
],
|
|
13
14
|
"scripts": {
|
|
14
|
-
"
|
|
15
|
-
"build": "tsc",
|
|
15
|
+
"serve": "node --watch --import tsx/esm src/server.ts",
|
|
16
|
+
"build": "tsc && mkdir -p dist/worker && cp ../../apps/worker/dist/index.js dist/worker/index.js 2>/dev/null || true",
|
|
17
|
+
"build:standalone": "tsc && cd ../../apps/demo && VITE_BASE_URL=/ npx vite build --outDir ../../packages/proxy/dist/ui",
|
|
16
18
|
"start": "node dist/server.js",
|
|
17
19
|
"lint": "tsc --noEmit",
|
|
18
20
|
"prepublishOnly": "npm run build"
|
|
@@ -36,13 +38,14 @@
|
|
|
36
38
|
"repository": {
|
|
37
39
|
"type": "git",
|
|
38
40
|
"url": "https://github.com/visionbridge-solutions/green-screen-react.git",
|
|
39
|
-
"directory": "proxy"
|
|
41
|
+
"directory": "packages/proxy"
|
|
40
42
|
},
|
|
41
43
|
"homepage": "https://github.com/visionbridge-solutions/green-screen-react#proxy-setup",
|
|
42
44
|
"bugs": {
|
|
43
45
|
"url": "https://github.com/visionbridge-solutions/green-screen-react/issues"
|
|
44
46
|
},
|
|
45
47
|
"dependencies": {
|
|
48
|
+
"green-screen-types": "*",
|
|
46
49
|
"cors": "^2.8.5",
|
|
47
50
|
"express": "^4.21.0",
|
|
48
51
|
"ws": "^8.18.0"
|