easyeda-mcp-pro 0.23.0 → 0.24.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/bridge/cdp-manager.d.ts +61 -0
- package/dist/bridge/cdp-manager.js +566 -0
- package/dist/bridge/cdp-manager.js.map +1 -0
- package/dist/config/version.d.ts +1 -1
- package/dist/config/version.js +1 -1
- package/dist/server/factory.d.ts +2 -1
- package/dist/server/factory.js +6 -4
- package/dist/server/factory.js.map +1 -1
- package/easyeda-bridge-extension.eext +0 -0
- package/package.json +1 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
import { type EnvConfig } from '../config/env.js';
|
|
3
|
+
import { type BridgeHello } from './protocol.js';
|
|
4
|
+
import type { BridgeState } from './manager.js';
|
|
5
|
+
export declare class CdpBridgeManager extends EventEmitter {
|
|
6
|
+
state: BridgeState;
|
|
7
|
+
hello: BridgeHello | null;
|
|
8
|
+
private config;
|
|
9
|
+
private ws;
|
|
10
|
+
private requestIdCounter;
|
|
11
|
+
private pending;
|
|
12
|
+
private _connectedAtMs;
|
|
13
|
+
private _lastHeartbeatMs;
|
|
14
|
+
private _activePort;
|
|
15
|
+
private _target;
|
|
16
|
+
private _methodRegistryHash;
|
|
17
|
+
constructor(config: EnvConfig);
|
|
18
|
+
get connected(): boolean;
|
|
19
|
+
get activePort(): number;
|
|
20
|
+
get uptimeMs(): number;
|
|
21
|
+
get lastHeartbeatMs(): number;
|
|
22
|
+
get methodRegistryHash(): string;
|
|
23
|
+
get easyedaVersion(): string | undefined;
|
|
24
|
+
get extensionVersion(): string | undefined;
|
|
25
|
+
get extensionVersionMismatch(): boolean;
|
|
26
|
+
get extensionMethodListHash(): string | undefined;
|
|
27
|
+
get loaderVersion(): string | undefined;
|
|
28
|
+
get registryMismatch(): boolean;
|
|
29
|
+
connect(): Promise<void>;
|
|
30
|
+
call<TParams, TResult>(method: string, params?: TParams, opts?: {
|
|
31
|
+
timeoutMs?: number;
|
|
32
|
+
traceparent?: string;
|
|
33
|
+
}): Promise<TResult>;
|
|
34
|
+
disconnect(reason?: string): void;
|
|
35
|
+
waitForConnection(timeoutMs: number): Promise<void>;
|
|
36
|
+
private dispatchMethod;
|
|
37
|
+
private getCdpBaseUrl;
|
|
38
|
+
private selectEasyedaTarget;
|
|
39
|
+
private fetchJson;
|
|
40
|
+
private openWebSocket;
|
|
41
|
+
private attachSocketHandlers;
|
|
42
|
+
private cdp;
|
|
43
|
+
private evaluateObject;
|
|
44
|
+
private extractExpression;
|
|
45
|
+
private apiCallExpression;
|
|
46
|
+
private runtimePrelude;
|
|
47
|
+
private sheetInfoExpression;
|
|
48
|
+
private componentListExpression;
|
|
49
|
+
private netListExpression;
|
|
50
|
+
private requireMappedWriteAllowed;
|
|
51
|
+
private searchDeviceExpression;
|
|
52
|
+
private placeComponentExpression;
|
|
53
|
+
private addWireExpression;
|
|
54
|
+
private createNetFlagExpression;
|
|
55
|
+
private createNetPortExpression;
|
|
56
|
+
private genericBridgeCallExpression;
|
|
57
|
+
private statusExpression;
|
|
58
|
+
private inventoryExpression;
|
|
59
|
+
private rejectPending;
|
|
60
|
+
private computeMethodRegistryHash;
|
|
61
|
+
}
|
|
@@ -0,0 +1,566 @@
|
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
import crypto from 'node:crypto';
|
|
3
|
+
import { WebSocket } from 'ws';
|
|
4
|
+
import { SERVER_VERSION } from '../config/version.js';
|
|
5
|
+
import { getLogger } from '../utils/logger.js';
|
|
6
|
+
import { EasyedaApiMethodSchema } from './types.js';
|
|
7
|
+
import { BRIDGE_CONTRACT_VERSION, SUPPORTED_PROTOCOL_VERSIONS, } from './protocol.js';
|
|
8
|
+
const DEFAULT_CDP_URL = 'http://127.0.0.1:9222';
|
|
9
|
+
const EASYEDA_EDITOR_URL_PART = 'pro.easyeda.com/editor';
|
|
10
|
+
const WRITE_METHOD_RE = /^(schematic\.|pcb\.|project\.(save|export)|board\.|export\.)/;
|
|
11
|
+
export class CdpBridgeManager extends EventEmitter {
|
|
12
|
+
state = 'disconnected';
|
|
13
|
+
hello = null;
|
|
14
|
+
config;
|
|
15
|
+
ws = null;
|
|
16
|
+
requestIdCounter = 0;
|
|
17
|
+
pending = new Map();
|
|
18
|
+
_connectedAtMs = 0;
|
|
19
|
+
_lastHeartbeatMs = 0;
|
|
20
|
+
_activePort = 9222;
|
|
21
|
+
_target = null;
|
|
22
|
+
_methodRegistryHash;
|
|
23
|
+
constructor(config) {
|
|
24
|
+
super();
|
|
25
|
+
this.config = config;
|
|
26
|
+
this._methodRegistryHash = this.computeMethodRegistryHash();
|
|
27
|
+
}
|
|
28
|
+
get connected() {
|
|
29
|
+
return this.state === 'connected' && this.ws?.readyState === WebSocket.OPEN;
|
|
30
|
+
}
|
|
31
|
+
get activePort() {
|
|
32
|
+
return this._activePort;
|
|
33
|
+
}
|
|
34
|
+
get uptimeMs() {
|
|
35
|
+
if (!this.connected || this._connectedAtMs === 0)
|
|
36
|
+
return 0;
|
|
37
|
+
return Date.now() - this._connectedAtMs;
|
|
38
|
+
}
|
|
39
|
+
get lastHeartbeatMs() {
|
|
40
|
+
return this._lastHeartbeatMs;
|
|
41
|
+
}
|
|
42
|
+
get methodRegistryHash() {
|
|
43
|
+
return this._methodRegistryHash;
|
|
44
|
+
}
|
|
45
|
+
get easyedaVersion() {
|
|
46
|
+
return this.hello?.easyedaVersion;
|
|
47
|
+
}
|
|
48
|
+
get extensionVersion() {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
get extensionVersionMismatch() {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
get extensionMethodListHash() {
|
|
55
|
+
return this._methodRegistryHash;
|
|
56
|
+
}
|
|
57
|
+
get loaderVersion() {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
get registryMismatch() {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
async connect() {
|
|
64
|
+
if (this.state === 'connected' || this.state === 'connecting')
|
|
65
|
+
return;
|
|
66
|
+
const prev = this.state;
|
|
67
|
+
this.state = 'connecting';
|
|
68
|
+
this.emit('stateChanged', this.state, prev);
|
|
69
|
+
const logger = getLogger();
|
|
70
|
+
const baseUrl = this.getCdpBaseUrl();
|
|
71
|
+
const targets = await this.fetchJson(`${baseUrl}/json/list`);
|
|
72
|
+
const target = this.selectEasyedaTarget(targets);
|
|
73
|
+
if (!target?.webSocketDebuggerUrl) {
|
|
74
|
+
this.state = 'error';
|
|
75
|
+
this.emit('stateChanged', 'error', 'connecting');
|
|
76
|
+
throw new Error('CDP bridge could not find an EasyEDA editor page target. Start EasyEDA Pro with --remote-debugging-port=9222 and open a project.');
|
|
77
|
+
}
|
|
78
|
+
this._target = target;
|
|
79
|
+
this._activePort = Number(new URL(baseUrl).port || '9222');
|
|
80
|
+
this.ws = await this.openWebSocket(target.webSocketDebuggerUrl);
|
|
81
|
+
this.attachSocketHandlers(this.ws);
|
|
82
|
+
await this.cdp('Runtime.enable');
|
|
83
|
+
const status = await this.evaluateObject(`(() => ({
|
|
84
|
+
title: document.title,
|
|
85
|
+
href: location.href,
|
|
86
|
+
appVersion: globalThis?.navigator?.userAgent?.match(/EasyEDAPro\\/([^ ]+)/)?.[1]
|
|
87
|
+
}))()`);
|
|
88
|
+
this.state = 'connected';
|
|
89
|
+
this._connectedAtMs = Date.now();
|
|
90
|
+
this._lastHeartbeatMs = Date.now();
|
|
91
|
+
this.hello = {
|
|
92
|
+
type: 'hello',
|
|
93
|
+
bridgeVersion: SERVER_VERSION,
|
|
94
|
+
contractVersion: BRIDGE_CONTRACT_VERSION,
|
|
95
|
+
supportedProtocolVersions: [...SUPPORTED_PROTOCOL_VERSIONS],
|
|
96
|
+
easyedaVersion: status.appVersion,
|
|
97
|
+
capabilities: EasyedaApiMethodSchema.options,
|
|
98
|
+
methodRegistryHash: this._methodRegistryHash,
|
|
99
|
+
maxPayloadSize: this.config.BRIDGE_MAX_PAYLOAD_SIZE,
|
|
100
|
+
devMode: true,
|
|
101
|
+
};
|
|
102
|
+
logger.info({ title: target.title, url: target.url }, 'cdp bridge connected to EasyEDA renderer');
|
|
103
|
+
this.emit('stateChanged', 'connected', prev);
|
|
104
|
+
this.emit('connected', this.hello);
|
|
105
|
+
}
|
|
106
|
+
async call(method, params, opts) {
|
|
107
|
+
if (!this.connected) {
|
|
108
|
+
const waitMs = this.config.BRIDGE_WAIT_FOR_EDA_MS;
|
|
109
|
+
if (waitMs > 0) {
|
|
110
|
+
await this.waitForConnection(waitMs);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (!this.connected) {
|
|
114
|
+
throw new Error(`CDP bridge not connected. Cannot call method "${method}".`);
|
|
115
|
+
}
|
|
116
|
+
const timeoutMs = opts?.timeoutMs ?? this.config.BRIDGE_TIMEOUT_MS;
|
|
117
|
+
const startedAt = Date.now();
|
|
118
|
+
try {
|
|
119
|
+
const result = await this.dispatchMethod(method, params, timeoutMs);
|
|
120
|
+
this._lastHeartbeatMs = Date.now();
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
const elapsed = Date.now() - startedAt;
|
|
125
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
126
|
+
throw new Error(`CDP bridge method "${method}" failed after ${elapsed}ms: ${detail}`, {
|
|
127
|
+
cause: err,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
disconnect(reason) {
|
|
132
|
+
const prev = this.state;
|
|
133
|
+
this.state = 'disconnected';
|
|
134
|
+
this.rejectPending(new Error(`CDP bridge disconnected: ${reason ?? 'unknown'}`));
|
|
135
|
+
if (this.ws) {
|
|
136
|
+
this.ws.close();
|
|
137
|
+
this.ws = null;
|
|
138
|
+
}
|
|
139
|
+
this.hello = null;
|
|
140
|
+
this._target = null;
|
|
141
|
+
this.emit('stateChanged', this.state, prev);
|
|
142
|
+
this.emit('disconnected', reason ?? 'unknown');
|
|
143
|
+
}
|
|
144
|
+
waitForConnection(timeoutMs) {
|
|
145
|
+
if (this.connected)
|
|
146
|
+
return Promise.resolve();
|
|
147
|
+
return new Promise((resolve, reject) => {
|
|
148
|
+
const timer = setTimeout(() => {
|
|
149
|
+
this.off('connected', onConnected);
|
|
150
|
+
reject(new Error('CDP bridge not connected'));
|
|
151
|
+
}, timeoutMs);
|
|
152
|
+
const onConnected = () => {
|
|
153
|
+
clearTimeout(timer);
|
|
154
|
+
resolve();
|
|
155
|
+
};
|
|
156
|
+
this.once('connected', onConnected);
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
async dispatchMethod(method, params, timeoutMs) {
|
|
160
|
+
if (method === 'system.getStatus') {
|
|
161
|
+
return this.evaluateObject(this.statusExpression());
|
|
162
|
+
}
|
|
163
|
+
if (method === 'system.apiInventory') {
|
|
164
|
+
return this.evaluateObject(this.inventoryExpression());
|
|
165
|
+
}
|
|
166
|
+
if (method === 'api.execute') {
|
|
167
|
+
const expression = this.extractExpression(params);
|
|
168
|
+
if (!expression) {
|
|
169
|
+
throw new Error('api.execute requires one of: expression, code, script.');
|
|
170
|
+
}
|
|
171
|
+
return this.evaluateObject(expression, timeoutMs);
|
|
172
|
+
}
|
|
173
|
+
if (method === 'api.call') {
|
|
174
|
+
const expression = this.apiCallExpression(params);
|
|
175
|
+
return this.evaluateObject(expression, timeoutMs);
|
|
176
|
+
}
|
|
177
|
+
if (method === 'schematic.getSheetInfo') {
|
|
178
|
+
return this.evaluateObject(this.sheetInfoExpression(), timeoutMs);
|
|
179
|
+
}
|
|
180
|
+
if (method === 'schematic.listComponents') {
|
|
181
|
+
return this.evaluateObject(this.componentListExpression(), timeoutMs);
|
|
182
|
+
}
|
|
183
|
+
if (method === 'schematic.listNets') {
|
|
184
|
+
return this.evaluateObject(this.netListExpression(), timeoutMs);
|
|
185
|
+
}
|
|
186
|
+
if (method === 'schematic.searchDevice') {
|
|
187
|
+
return this.evaluateObject(this.searchDeviceExpression(params), timeoutMs);
|
|
188
|
+
}
|
|
189
|
+
if (method === 'schematic.placeComponent') {
|
|
190
|
+
this.requireMappedWriteAllowed(method);
|
|
191
|
+
return this.evaluateObject(this.placeComponentExpression(params), timeoutMs);
|
|
192
|
+
}
|
|
193
|
+
if (method === 'schematic.addWire') {
|
|
194
|
+
this.requireMappedWriteAllowed(method);
|
|
195
|
+
return this.evaluateObject(this.addWireExpression(params), timeoutMs);
|
|
196
|
+
}
|
|
197
|
+
if (method === 'schematic.createNetFlag') {
|
|
198
|
+
this.requireMappedWriteAllowed(method);
|
|
199
|
+
return this.evaluateObject(this.createNetFlagExpression(params), timeoutMs);
|
|
200
|
+
}
|
|
201
|
+
if (method === 'schematic.createNetPort') {
|
|
202
|
+
this.requireMappedWriteAllowed(method);
|
|
203
|
+
return this.evaluateObject(this.createNetPortExpression(params), timeoutMs);
|
|
204
|
+
}
|
|
205
|
+
if (WRITE_METHOD_RE.test(method) && process.env.EASYEDA_CDP_ALLOW_UNMAPPED_WRITES !== 'true') {
|
|
206
|
+
throw new Error(`CDP bridge has not mapped mutating EasyEDA method "${method}" yet. Use api.execute for explicit runtime probes, or set EASYEDA_CDP_ALLOW_UNMAPPED_WRITES=true only in a disposable test project.`);
|
|
207
|
+
}
|
|
208
|
+
return this.evaluateObject(this.genericBridgeCallExpression(method, params), timeoutMs);
|
|
209
|
+
}
|
|
210
|
+
getCdpBaseUrl() {
|
|
211
|
+
return (process.env.EASYEDA_CDP_URL ?? DEFAULT_CDP_URL).replace(/\/$/, '');
|
|
212
|
+
}
|
|
213
|
+
selectEasyedaTarget(targets) {
|
|
214
|
+
const explicit = process.env.EASYEDA_CDP_TARGET_ID;
|
|
215
|
+
if (explicit)
|
|
216
|
+
return targets.find((target) => target.id === explicit);
|
|
217
|
+
return (targets.find((target) => target.type === 'page' && target.url.includes(EASYEDA_EDITOR_URL_PART)) ??
|
|
218
|
+
targets.find((target) => target.type === 'page' && /JLCEDA|EasyEDA/i.test(target.title)) ??
|
|
219
|
+
targets.find((target) => target.type === 'page'));
|
|
220
|
+
}
|
|
221
|
+
async fetchJson(url) {
|
|
222
|
+
const response = await fetch(url);
|
|
223
|
+
if (!response.ok) {
|
|
224
|
+
throw new Error(`CDP HTTP request failed: ${response.status} ${response.statusText}`);
|
|
225
|
+
}
|
|
226
|
+
return (await response.json());
|
|
227
|
+
}
|
|
228
|
+
openWebSocket(url) {
|
|
229
|
+
return new Promise((resolve, reject) => {
|
|
230
|
+
const ws = new WebSocket(url);
|
|
231
|
+
const timer = setTimeout(() => reject(new Error('CDP WebSocket open timeout')), 5_000);
|
|
232
|
+
ws.once('open', () => {
|
|
233
|
+
clearTimeout(timer);
|
|
234
|
+
resolve(ws);
|
|
235
|
+
});
|
|
236
|
+
ws.once('error', (err) => {
|
|
237
|
+
clearTimeout(timer);
|
|
238
|
+
reject(err);
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
attachSocketHandlers(ws) {
|
|
243
|
+
ws.on('message', (raw) => {
|
|
244
|
+
const data = JSON.parse(raw.toString());
|
|
245
|
+
if (data.id !== undefined) {
|
|
246
|
+
const pending = this.pending.get(data.id);
|
|
247
|
+
if (pending) {
|
|
248
|
+
clearTimeout(pending.timer);
|
|
249
|
+
this.pending.delete(data.id);
|
|
250
|
+
pending.resolve(data);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
ws.on('close', (code, reason) => {
|
|
255
|
+
if (this.state !== 'disconnected') {
|
|
256
|
+
const prev = this.state;
|
|
257
|
+
this.state = 'connecting';
|
|
258
|
+
this.emit('stateChanged', 'connecting', prev);
|
|
259
|
+
this.emit('disconnected', reason.toString() || `cdp_close_${code}`);
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
ws.on('error', (err) => {
|
|
263
|
+
getLogger().error({ err }, 'cdp bridge websocket error');
|
|
264
|
+
this.emit('error', err);
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
cdp(method, params = {}, timeoutMs = this.config.BRIDGE_TIMEOUT_MS) {
|
|
268
|
+
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
|
|
269
|
+
return Promise.reject(new Error('CDP WebSocket is not open'));
|
|
270
|
+
}
|
|
271
|
+
const id = ++this.requestIdCounter;
|
|
272
|
+
const message = JSON.stringify({ id, method, params });
|
|
273
|
+
return new Promise((resolve, reject) => {
|
|
274
|
+
const timer = setTimeout(() => {
|
|
275
|
+
this.pending.delete(id);
|
|
276
|
+
reject(new Error(`CDP command "${method}" timed out after ${timeoutMs}ms`));
|
|
277
|
+
}, timeoutMs);
|
|
278
|
+
this.pending.set(id, { resolve, reject, timer, startedAt: Date.now(), method });
|
|
279
|
+
this.ws?.send(message);
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
async evaluateObject(expression, timeoutMs = this.config.BRIDGE_TIMEOUT_MS) {
|
|
283
|
+
const response = await this.cdp('Runtime.evaluate', {
|
|
284
|
+
expression,
|
|
285
|
+
returnByValue: true,
|
|
286
|
+
awaitPromise: true,
|
|
287
|
+
timeout: timeoutMs,
|
|
288
|
+
}, timeoutMs);
|
|
289
|
+
if (response.error) {
|
|
290
|
+
throw new Error(response.error.message);
|
|
291
|
+
}
|
|
292
|
+
const result = response.result;
|
|
293
|
+
if (result?.exceptionDetails) {
|
|
294
|
+
throw new Error(result.exceptionDetails.exception?.description ??
|
|
295
|
+
result.exceptionDetails.text ??
|
|
296
|
+
'Runtime evaluation failed');
|
|
297
|
+
}
|
|
298
|
+
return (result?.result?.value ??
|
|
299
|
+
result?.result?.unserializableValue ??
|
|
300
|
+
result?.result?.description);
|
|
301
|
+
}
|
|
302
|
+
extractExpression(params) {
|
|
303
|
+
if (!params || typeof params !== 'object')
|
|
304
|
+
return undefined;
|
|
305
|
+
const record = params;
|
|
306
|
+
const value = record.expression ?? record.code ?? record.script;
|
|
307
|
+
return typeof value === 'string' ? value : undefined;
|
|
308
|
+
}
|
|
309
|
+
apiCallExpression(params) {
|
|
310
|
+
const record = (params && typeof params === 'object' ? params : {});
|
|
311
|
+
const targetMethod = String(record.method ?? record.name ?? '');
|
|
312
|
+
const args = JSON.stringify(record.args ?? record.params ?? []);
|
|
313
|
+
if (!targetMethod) {
|
|
314
|
+
throw new Error('api.call requires method/name.');
|
|
315
|
+
}
|
|
316
|
+
return `(() => {
|
|
317
|
+
const path = ${JSON.stringify(targetMethod)}.split('.');
|
|
318
|
+
let fn = globalThis;
|
|
319
|
+
for (const part of path) fn = fn?.[part];
|
|
320
|
+
if (typeof fn !== 'function') throw new Error('Runtime API function not found: ${targetMethod}');
|
|
321
|
+
return fn(...${args});
|
|
322
|
+
})()`;
|
|
323
|
+
}
|
|
324
|
+
runtimePrelude() {
|
|
325
|
+
return `
|
|
326
|
+
const readPath = (source, path) => path.split('.').reduce((acc, part) => acc == null ? undefined : acc[part], source);
|
|
327
|
+
const readFirst = (paths) => {
|
|
328
|
+
const roots = [];
|
|
329
|
+
try { if (typeof eda !== 'undefined' && eda) roots.push(eda); } catch {}
|
|
330
|
+
try { if (typeof EDA !== 'undefined' && EDA) roots.push(EDA); } catch {}
|
|
331
|
+
try { if (typeof api !== 'undefined' && api) roots.push(api); } catch {}
|
|
332
|
+
roots.push(globalThis);
|
|
333
|
+
for (const root of roots) for (const path of paths) {
|
|
334
|
+
const value = readPath(root, path);
|
|
335
|
+
if (value !== undefined && value !== null) return value;
|
|
336
|
+
}
|
|
337
|
+
return undefined;
|
|
338
|
+
};
|
|
339
|
+
const callFirst = async (paths, ...args) => {
|
|
340
|
+
const roots = [];
|
|
341
|
+
try { if (typeof eda !== 'undefined' && eda) roots.push(eda); } catch {}
|
|
342
|
+
try { if (typeof EDA !== 'undefined' && EDA) roots.push(EDA); } catch {}
|
|
343
|
+
try { if (typeof api !== 'undefined' && api) roots.push(api); } catch {}
|
|
344
|
+
roots.push(globalThis);
|
|
345
|
+
for (const root of roots) for (const path of paths) {
|
|
346
|
+
const parts = path.split('.');
|
|
347
|
+
const name = parts.pop();
|
|
348
|
+
const parent = parts.reduce((acc, part) => acc == null ? undefined : acc[part], root);
|
|
349
|
+
const fn = parent == null ? undefined : parent[name];
|
|
350
|
+
if (typeof fn === 'function') return await fn.apply(parent, args);
|
|
351
|
+
}
|
|
352
|
+
throw new Error('No EasyEDA runtime implementation found for ' + paths.join(' or '));
|
|
353
|
+
};
|
|
354
|
+
`;
|
|
355
|
+
}
|
|
356
|
+
sheetInfoExpression() {
|
|
357
|
+
return `async () => {}`.replace('async () => {}', `
|
|
358
|
+
(async () => {
|
|
359
|
+
${this.runtimePrelude()}
|
|
360
|
+
const currentPage = await callFirst(['DMT_Schematic.getCurrentSchematicPageInfo','dmt_Schematic.getCurrentSchematicPageInfo']);
|
|
361
|
+
let pages = [];
|
|
362
|
+
try {
|
|
363
|
+
pages = await callFirst(['DMT_Schematic.getCurrentSchematicAllSchematicPagesInfo','DMT_Schematic.getAllSchematicPagesInfo','dmt_Schematic.getCurrentSchematicAllSchematicPagesInfo','dmt_Schematic.getAllSchematicPagesInfo']);
|
|
364
|
+
} catch (error) {
|
|
365
|
+
pages = { warning: String(error && error.message || error) };
|
|
366
|
+
}
|
|
367
|
+
return { currentPage, pages };
|
|
368
|
+
})()
|
|
369
|
+
`);
|
|
370
|
+
}
|
|
371
|
+
componentListExpression() {
|
|
372
|
+
return `
|
|
373
|
+
(async () => {
|
|
374
|
+
${this.runtimePrelude()}
|
|
375
|
+
const klass = readFirst(['SCH_PrimitiveComponent','SCH_PrimitiveComponent3','sch_PrimitiveComponent']);
|
|
376
|
+
const fpKlass = readFirst(['LIB_Footprint','lib_Footprint']);
|
|
377
|
+
if (!klass || typeof klass.getAll !== 'function') throw new Error('SCH_PrimitiveComponent.getAll is not available');
|
|
378
|
+
const comps = await klass.getAll(undefined, true);
|
|
379
|
+
const result = [];
|
|
380
|
+
for (const c of comps || []) {
|
|
381
|
+
const reference = typeof c.getState_Designator === 'function' ? c.getState_Designator() : '';
|
|
382
|
+
const value = typeof c.getState_Name === 'function' ? c.getState_Name() : '';
|
|
383
|
+
let footprint = '';
|
|
384
|
+
try {
|
|
385
|
+
const fpInfo = typeof c.getState_Footprint === 'function' ? c.getState_Footprint() : undefined;
|
|
386
|
+
if (fpInfo && fpInfo.uuid && fpKlass && typeof fpKlass.get === 'function') {
|
|
387
|
+
const fp = await fpKlass.get(fpInfo.uuid, fpInfo.libraryUuid);
|
|
388
|
+
footprint = fp && fp.name || '';
|
|
389
|
+
}
|
|
390
|
+
} catch {}
|
|
391
|
+
const lcsc = typeof c.getState_SupplierId === 'function' ? c.getState_SupplierId() : '';
|
|
392
|
+
const manufacturer = typeof c.getState_Manufacturer === 'function' ? c.getState_Manufacturer() : '';
|
|
393
|
+
result.push({ reference, value, footprint, lcsc, manufacturer });
|
|
394
|
+
}
|
|
395
|
+
return result;
|
|
396
|
+
})()
|
|
397
|
+
`;
|
|
398
|
+
}
|
|
399
|
+
netListExpression() {
|
|
400
|
+
return `
|
|
401
|
+
(async () => {
|
|
402
|
+
${this.runtimePrelude()}
|
|
403
|
+
const klass = readFirst(['SCH_PrimitiveComponent','SCH_PrimitiveComponent3','sch_PrimitiveComponent']);
|
|
404
|
+
const netKlass = readFirst(['SCH_Net','sch_Net']);
|
|
405
|
+
if (!klass || typeof klass.getAll !== 'function') throw new Error('SCH_PrimitiveComponent.getAll is not available');
|
|
406
|
+
const comps = await klass.getAll(undefined, true);
|
|
407
|
+
const netMap = new Map();
|
|
408
|
+
const add = (netName, node) => {
|
|
409
|
+
if (!netName) return;
|
|
410
|
+
const key = String(netName);
|
|
411
|
+
if (!netMap.has(key)) netMap.set(key, []);
|
|
412
|
+
if (node && !netMap.get(key).some((n) => n.component === node.component && n.pin === node.pin)) netMap.get(key).push(node);
|
|
413
|
+
};
|
|
414
|
+
for (const c of comps || []) {
|
|
415
|
+
const ref = typeof c.getState_Designator === 'function' ? c.getState_Designator() : '';
|
|
416
|
+
if (!ref || typeof c.getAllPins !== 'function') continue;
|
|
417
|
+
try {
|
|
418
|
+
const pins = await c.getAllPins();
|
|
419
|
+
for (const pin of pins || []) {
|
|
420
|
+
const pinNumber = typeof pin.getState_PinNumber === 'function' ? pin.getState_PinNumber() : '';
|
|
421
|
+
const other = typeof pin.getState_OtherProperty === 'function' ? pin.getState_OtherProperty() : undefined;
|
|
422
|
+
const netName = other && (other.net || other.Net || other.NET);
|
|
423
|
+
add(netName, { component: ref, pin: pinNumber });
|
|
424
|
+
}
|
|
425
|
+
} catch {}
|
|
426
|
+
}
|
|
427
|
+
if (netKlass && typeof netKlass.getAllNets === 'function') {
|
|
428
|
+
try {
|
|
429
|
+
const all = await netKlass.getAllNets();
|
|
430
|
+
for (const n of all || []) add(n.netName || n.net || n.name, null);
|
|
431
|
+
} catch {}
|
|
432
|
+
}
|
|
433
|
+
return Array.from(netMap.entries()).map(([netName, nodes]) => ({ netName, nodes }));
|
|
434
|
+
})()
|
|
435
|
+
`;
|
|
436
|
+
}
|
|
437
|
+
requireMappedWriteAllowed(method) {
|
|
438
|
+
if (process.env.EASYEDA_CDP_ALLOW_WRITES !== 'true') {
|
|
439
|
+
throw new Error(`CDP mapped write method "${method}" requires EASYEDA_CDP_ALLOW_WRITES=true. Use only on a disposable EasyEDA test project.`);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
searchDeviceExpression(params) {
|
|
443
|
+
const p = JSON.stringify(params ?? {});
|
|
444
|
+
return `
|
|
445
|
+
(async () => {
|
|
446
|
+
${this.runtimePrelude()}
|
|
447
|
+
const params = ${p};
|
|
448
|
+
return await callFirst(['LIB_Device.search','lib_Device.search'], params.key, params.libraryUuid, params.classification, params.symbolType, params.itemsOfPage, params.page);
|
|
449
|
+
})()
|
|
450
|
+
`;
|
|
451
|
+
}
|
|
452
|
+
placeComponentExpression(params) {
|
|
453
|
+
const p = JSON.stringify(params ?? {});
|
|
454
|
+
return `
|
|
455
|
+
(async () => {
|
|
456
|
+
${this.runtimePrelude()}
|
|
457
|
+
const params = ${p};
|
|
458
|
+
if (!params.deviceItem) throw new Error('schematic.placeComponent requires deviceItem. Use schematic.searchDevice first.');
|
|
459
|
+
const result = await callFirst(['SCH_PrimitiveComponent.create','sch_PrimitiveComponent.create'], params.deviceItem, params.x, params.y);
|
|
460
|
+
return { primitiveId: result?.uuid || result?.id || result?.primitiveId || null, raw: result };
|
|
461
|
+
})()
|
|
462
|
+
`;
|
|
463
|
+
}
|
|
464
|
+
addWireExpression(params) {
|
|
465
|
+
const p = JSON.stringify(params ?? {});
|
|
466
|
+
return `
|
|
467
|
+
(async () => {
|
|
468
|
+
${this.runtimePrelude()}
|
|
469
|
+
const params = ${p};
|
|
470
|
+
const points = Array.isArray(params.points) ? params.points.flatMap((point) => [point.x, point.y]) : [];
|
|
471
|
+
if (points.length < 4) throw new Error('schematic.addWire requires at least two points.');
|
|
472
|
+
const result = await callFirst(['SCH_PrimitiveWire.create','sch_PrimitiveWire.create'], points, params.netName, params.color, params.lineWidth, params.lineType);
|
|
473
|
+
return { primitiveId: result?.uuid || result?.id || result?.primitiveId || null, raw: result };
|
|
474
|
+
})()
|
|
475
|
+
`;
|
|
476
|
+
}
|
|
477
|
+
createNetFlagExpression(params) {
|
|
478
|
+
const p = JSON.stringify(params ?? {});
|
|
479
|
+
return `
|
|
480
|
+
(async () => {
|
|
481
|
+
${this.runtimePrelude()}
|
|
482
|
+
const params = ${p};
|
|
483
|
+
const powerIds = ['Power','Ground','AnalogGround','ProtectGround'];
|
|
484
|
+
let result;
|
|
485
|
+
if (params.identification && powerIds.includes(params.identification)) {
|
|
486
|
+
result = await callFirst(['SCH_PrimitiveComponent.createNetFlag','sch_PrimitiveComponent.createNetFlag'], params.identification, params.netName, params.x, params.y, params.rotation || 0);
|
|
487
|
+
} else {
|
|
488
|
+
result = await callFirst(['SCH_PrimitiveAttribute.createNetLabel','sch_PrimitiveAttribute.createNetLabel'], params.x, params.y, params.netName);
|
|
489
|
+
}
|
|
490
|
+
return { primitiveId: result?.uuid || result?.id || result?.primitiveId || null, netName: params.netName, raw: result };
|
|
491
|
+
})()
|
|
492
|
+
`;
|
|
493
|
+
}
|
|
494
|
+
createNetPortExpression(params) {
|
|
495
|
+
const p = JSON.stringify(params ?? {});
|
|
496
|
+
return `
|
|
497
|
+
(async () => {
|
|
498
|
+
${this.runtimePrelude()}
|
|
499
|
+
const params = ${p};
|
|
500
|
+
const map = { input: 'IN', output: 'OUT', bidirectional: 'BI', triState: 'BI', passive: 'BI' };
|
|
501
|
+
const direction = map[params.portType || 'passive'] || 'BI';
|
|
502
|
+
const result = await callFirst(['SCH_PrimitiveComponent.createNetPort','sch_PrimitiveComponent.createNetPort'], direction, params.netName, params.x, params.y, params.rotation || 0);
|
|
503
|
+
return { primitiveId: result?.uuid || result?.id || result?.primitiveId || null, netName: params.netName, raw: result };
|
|
504
|
+
})()
|
|
505
|
+
`;
|
|
506
|
+
}
|
|
507
|
+
genericBridgeCallExpression(method, params) {
|
|
508
|
+
return `(() => {
|
|
509
|
+
const detail = {
|
|
510
|
+
method: ${JSON.stringify(method)},
|
|
511
|
+
params: ${JSON.stringify(params ?? null)},
|
|
512
|
+
title: document.title,
|
|
513
|
+
href: location.href,
|
|
514
|
+
hint: 'CDP generic bridge reached EasyEDA renderer, but this MCP method is not mapped to EasyEDA runtime APIs yet.'
|
|
515
|
+
};
|
|
516
|
+
return { ok: false, code: 'CDP_METHOD_NOT_MAPPED', detail };
|
|
517
|
+
})()`;
|
|
518
|
+
}
|
|
519
|
+
statusExpression() {
|
|
520
|
+
return `(() => ({
|
|
521
|
+
bridge: 'cdp',
|
|
522
|
+
title: document.title,
|
|
523
|
+
href: location.href,
|
|
524
|
+
readyState: document.readyState,
|
|
525
|
+
userAgent: navigator.userAgent,
|
|
526
|
+
target: ${JSON.stringify(this._target)},
|
|
527
|
+
easyedaLikeGlobals: Object.keys(globalThis).filter((key) => /easy|eda|jlc|api|sch|pcb|editor|project|gvar/i.test(key)).slice(0, 120)
|
|
528
|
+
}))()`;
|
|
529
|
+
}
|
|
530
|
+
inventoryExpression() {
|
|
531
|
+
return `(() => {
|
|
532
|
+
const keys = Object.keys(globalThis);
|
|
533
|
+
const candidates = keys.filter((key) => /easy|eda|jlc|api|sch|pcb|editor|project|gvar|canvas|primitive|net|component/i.test(key));
|
|
534
|
+
const globals = candidates.slice(0, 240).map((key) => {
|
|
535
|
+
const value = globalThis[key];
|
|
536
|
+
return {
|
|
537
|
+
key,
|
|
538
|
+
type: typeof value,
|
|
539
|
+
ctor: value?.constructor?.name,
|
|
540
|
+
ownKeys: value && (typeof value === 'object' || typeof value === 'function') ? Object.keys(value).slice(0, 40) : []
|
|
541
|
+
};
|
|
542
|
+
});
|
|
543
|
+
return {
|
|
544
|
+
bridge: 'cdp',
|
|
545
|
+
title: document.title,
|
|
546
|
+
href: location.href,
|
|
547
|
+
readyState: document.readyState,
|
|
548
|
+
globals,
|
|
549
|
+
localStorageKeys: (() => { try { return Object.keys(localStorage).slice(0, 120); } catch { return []; } })(),
|
|
550
|
+
sessionStorageKeys: (() => { try { return Object.keys(sessionStorage).slice(0, 120); } catch { return []; } })()
|
|
551
|
+
};
|
|
552
|
+
})()`;
|
|
553
|
+
}
|
|
554
|
+
rejectPending(error) {
|
|
555
|
+
for (const [, pending] of this.pending) {
|
|
556
|
+
clearTimeout(pending.timer);
|
|
557
|
+
pending.reject(error);
|
|
558
|
+
}
|
|
559
|
+
this.pending.clear();
|
|
560
|
+
}
|
|
561
|
+
computeMethodRegistryHash() {
|
|
562
|
+
const sorted = [...EasyedaApiMethodSchema.options].sort((a, b) => a.localeCompare(b));
|
|
563
|
+
return crypto.createHash('sha256').update(sorted.join(',')).digest('hex').slice(0, 16);
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
//# sourceMappingURL=cdp-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdp-manager.js","sourceRoot":"","sources":["../../src/bridge/cdp-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EACL,uBAAuB,EACvB,2BAA2B,GAE5B,MAAM,eAAe,CAAC;AA2BvB,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAChD,MAAM,uBAAuB,GAAG,wBAAwB,CAAC;AACzD,MAAM,eAAe,GAAG,8DAA8D,CAAC;AAEvF,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IACzC,KAAK,GAAgB,cAAc,CAAC;IACpC,KAAK,GAAuB,IAAI,CAAC;IAEhC,MAAM,CAAY;IAClB,EAAE,GAAqB,IAAI,CAAC;IAC5B,gBAAgB,GAAG,CAAC,CAAC;IACrB,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC5C,cAAc,GAAG,CAAC,CAAC;IACnB,gBAAgB,GAAG,CAAC,CAAC;IACrB,WAAW,GAAG,IAAI,CAAC;IACnB,OAAO,GAAqB,IAAI,CAAC;IACjC,mBAAmB,CAAS;IAEpC,YAAY,MAAiB;QAC3B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;IAC9D,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,IAAI,CAAC,EAAE,EAAE,UAAU,KAAK,SAAS,CAAC,IAAI,CAAC;IAC9E,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,QAAQ;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;IAC1C,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC;IACpC,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,wBAAwB;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,uBAAuB;QACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED,IAAI,aAAa;QACf,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,KAAK,YAAY;YAAE,OAAO;QAEtE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAc,GAAG,OAAO,YAAY,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;YACjD,MAAM,IAAI,KAAK,CACb,kIAAkI,CACnI,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAChE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAEjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CACtC;;;;YAIM,CACP,CAAC;QAEF,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG;YACX,IAAI,EAAE,OAAO;YACb,aAAa,EAAE,cAAc;YAC7B,eAAe,EAAE,uBAAuB;YACxC,yBAAyB,EAAE,CAAC,GAAG,2BAA2B,CAAC;YAC3D,cAAc,EAAE,MAAM,CAAC,UAAU;YACjC,YAAY,EAAE,sBAAsB,CAAC,OAAO;YAC5C,kBAAkB,EAAE,IAAI,CAAC,mBAAmB;YAC5C,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,uBAAuB;YACnD,OAAO,EAAE,IAAI;SACd,CAAC;QAEF,MAAM,CAAC,IAAI,CACT,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,EACxC,0CAA0C,CAC3C,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,IAAI,CACR,MAAc,EACd,MAAgB,EAChB,IAAmD;QAEnD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC;YAClD,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBACf,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,iDAAiD,MAAM,IAAI,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;QACnE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;YACpE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACnC,OAAO,MAAiB,CAAC;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACvC,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,kBAAkB,OAAO,OAAO,MAAM,EAAE,EAAE;gBACpF,KAAK,EAAE,GAAG;aACX,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,UAAU,CAAC,MAAe;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,4BAA4B,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC;QACjF,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,IAAI,SAAS,CAAC,CAAC;IACjD,CAAC;IAED,iBAAiB,CAAC,SAAiB;QACjC,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7C,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;gBACnC,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;YAChD,CAAC,EAAE,SAAS,CAAC,CAAC;YACd,MAAM,WAAW,GAAG,GAAG,EAAE;gBACvB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,cAAc,CAC1B,MAAc,EACd,MAAe,EACf,SAAiB;QAEjB,IAAI,MAAM,KAAK,kBAAkB,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,MAAM,KAAK,qBAAqB,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAC5E,CAAC;YACD,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,MAAM,KAAK,wBAAwB,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,SAAS,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,MAAM,KAAK,0BAA0B,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,SAAS,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,MAAM,KAAK,oBAAoB,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,SAAS,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,MAAM,KAAK,wBAAwB,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,MAAM,KAAK,0BAA0B,EAAE,CAAC;YAC1C,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;QAC/E,CAAC;QAED,IAAI,MAAM,KAAK,mBAAmB,EAAE,CAAC;YACnC,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,MAAM,KAAK,yBAAyB,EAAE,CAAC;YACzC,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,MAAM,KAAK,yBAAyB,EAAE,CAAC;YACzC,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,iCAAiC,KAAK,MAAM,EAAE,CAAC;YAC7F,MAAM,IAAI,KAAK,CACb,sDAAsD,MAAM,sIAAsI,CACnM,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;IAC1F,CAAC;IAEO,aAAa;QACnB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,eAAe,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC7E,CAAC;IAEO,mBAAmB,CAAC,OAAoB;QAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;QACnD,IAAI,QAAQ;YAAE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QACtE,OAAO,CACL,OAAO,CAAC,IAAI,CACV,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CACnF;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxF,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CACjD,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,SAAS,CAAI,GAAW;QACpC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;IACtC,CAAC;IAEO,aAAa,CAAC,GAAW;QAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACvF,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;gBACnB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,CAAC,EAAE,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACvB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,EAAa;QACxC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAgB,CAAC;YACvD,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1C,IAAI,OAAO,EAAE,CAAC;oBACZ,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC7B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAC9B,IAAI,IAAI,CAAC,KAAK,KAAK,cAAc,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;gBACxB,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;gBAC1B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;gBAC9C,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,aAAa,IAAI,EAAE,CAAC,CAAC;YACtE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACrB,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,4BAA4B,CAAC,CAAC;YACzD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,GAAG,CACT,MAAc,EACd,SAAkC,EAAE,EACpC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB;QAEzC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACtD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACvD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,MAAM,qBAAqB,SAAS,IAAI,CAAC,CAAC,CAAC;YAC9E,CAAC,EAAE,SAAS,CAAC,CAAC;YACd,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAChF,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,cAAc,CAC1B,UAAkB,EAClB,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB;QAEzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAC7B,kBAAkB,EAClB;YACE,UAAU;YACV,aAAa,EAAE,IAAI;YACnB,YAAY,EAAE,IAAI;YAClB,OAAO,EAAE,SAAS;SACnB,EACD,SAAS,CACV,CAAC;QAEF,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,MAGvB,CAAC;QAEF,IAAI,MAAM,EAAE,gBAAgB,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW;gBAC5C,MAAM,CAAC,gBAAgB,CAAC,IAAI;gBAC5B,2BAA2B,CAC9B,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK;YAC3B,MAAM,EAAE,MAAM,EAAE,mBAAmB;YACnC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAM,CAAC;IACtC,CAAC;IAEO,iBAAiB,CAAC,MAAe;QACvC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAiC,CAAC;QACjD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC;QAChE,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,CAAC;IAEO,iBAAiB,CAAC,MAAe;QACvC,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAA4B,CAAC;QAC/F,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAChE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO;qBACU,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;;;uFAGsC,YAAY;qBAC9E,IAAI;SAChB,CAAC;IACR,CAAC;IAEO,cAAc;QACpB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6BN,CAAC;IACJ,CAAC;IAEO,mBAAmB;QACzB,OAAO,gBAAgB,CAAC,OAAO,CAC7B,gBAAgB,EAChB;;UAEI,IAAI,CAAC,cAAc,EAAE;;;;;;;;;;KAU1B,CACA,CAAC;IACJ,CAAC;IAEO,uBAAuB;QAC7B,OAAO;;UAED,IAAI,CAAC,cAAc,EAAE;;;;;;;;;;;;;;;;;;;;;;;KAuB1B,CAAC;IACJ,CAAC;IAEO,iBAAiB;QACvB,OAAO;;UAED,IAAI,CAAC,cAAc,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAiC1B,CAAC;IACJ,CAAC;IAEO,yBAAyB,CAAC,MAAc;QAC9C,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,MAAM,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CACb,4BAA4B,MAAM,0FAA0F,CAC7H,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,MAAe;QAC5C,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACvC,OAAO;;UAED,IAAI,CAAC,cAAc,EAAE;yBACN,CAAC;;;KAGrB,CAAC;IACJ,CAAC;IAEO,wBAAwB,CAAC,MAAe;QAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACvC,OAAO;;UAED,IAAI,CAAC,cAAc,EAAE;yBACN,CAAC;;;;;KAKrB,CAAC;IACJ,CAAC;IAEO,iBAAiB,CAAC,MAAe;QACvC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACvC,OAAO;;UAED,IAAI,CAAC,cAAc,EAAE;yBACN,CAAC;;;;;;KAMrB,CAAC;IACJ,CAAC;IAEO,uBAAuB,CAAC,MAAe;QAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACvC,OAAO;;UAED,IAAI,CAAC,cAAc,EAAE;yBACN,CAAC;;;;;;;;;;KAUrB,CAAC;IACJ,CAAC;IAEO,uBAAuB,CAAC,MAAe;QAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACvC,OAAO;;UAED,IAAI,CAAC,cAAc,EAAE;yBACN,CAAC;;;;;;KAMrB,CAAC;IACJ,CAAC;IAEO,2BAA2B,CAAC,MAAc,EAAE,MAAe;QACjE,OAAO;;kBAEO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;kBACtB,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC;;;;;;SAMvC,CAAC;IACR,CAAC;IAEO,gBAAgB;QACtB,OAAO;;;;;;gBAMK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;;UAElC,CAAC;IACT,CAAC;IAEO,mBAAmB;QACzB,OAAO;;;;;;;;;;;;;;;;;;;;;SAqBF,CAAC;IACR,CAAC;IAEO,aAAa,CAAC,KAAY;QAChC,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAEO,yBAAyB;QAC/B,MAAM,MAAM,GAAG,CAAC,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC;CACF"}
|
package/dist/config/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SERVER_VERSION = "0.
|
|
1
|
+
export declare const SERVER_VERSION = "0.24.0";
|
package/dist/config/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const SERVER_VERSION = '0.
|
|
1
|
+
export const SERVER_VERSION = '0.24.0'; // x-release-please-version
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/dist/server/factory.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { type ToolContext } from '../tools/types.js';
|
|
|
7
7
|
import { Storage } from '../storage/index.js';
|
|
8
8
|
import { type HttpTransportInstance } from './transports/http.js';
|
|
9
9
|
import { BridgeManager } from '../bridge/manager.js';
|
|
10
|
+
import { CdpBridgeManager } from '../bridge/cdp-manager.js';
|
|
10
11
|
export interface McpServerInstance {
|
|
11
12
|
server: McpServer;
|
|
12
13
|
registry: ToolRegistry;
|
|
@@ -14,7 +15,7 @@ export interface McpServerInstance {
|
|
|
14
15
|
httpTransport?: HttpTransportInstance;
|
|
15
16
|
context: ToolContext;
|
|
16
17
|
storage?: Storage;
|
|
17
|
-
bridge: BridgeManager;
|
|
18
|
+
bridge: BridgeManager | CdpBridgeManager;
|
|
18
19
|
shutdown: () => Promise<void>;
|
|
19
20
|
}
|
|
20
21
|
export declare function createServer(config: EnvConfig): Promise<McpServerInstance>;
|
package/dist/server/factory.js
CHANGED
|
@@ -7,6 +7,7 @@ import { redactObject } from '../utils/redaction.js';
|
|
|
7
7
|
import { loadFeatureFlags } from '../config/feature-flags.js';
|
|
8
8
|
import { Storage } from '../storage/index.js';
|
|
9
9
|
import { BridgeManager } from '../bridge/manager.js';
|
|
10
|
+
import { CdpBridgeManager } from '../bridge/cdp-manager.js';
|
|
10
11
|
import { startHotSwapWatcher } from '../bridge/hotswap-watcher.js';
|
|
11
12
|
import { registerBuiltinTools } from '../tools/register.js';
|
|
12
13
|
import { registerProjectResourcesAndPrompts } from './resources-prompts.js';
|
|
@@ -24,6 +25,7 @@ export async function createServer(config) {
|
|
|
24
25
|
transport: config.TRANSPORT,
|
|
25
26
|
nodeVersion: process.version,
|
|
26
27
|
flags: redactObject(flags),
|
|
28
|
+
bridgeMode: process.env.EASYEDA_BRIDGE === 'cdp' ? 'cdp' : 'extension',
|
|
27
29
|
}, 'server initializing');
|
|
28
30
|
const server = new McpServer({
|
|
29
31
|
name: 'easyeda-mcp-pro',
|
|
@@ -36,9 +38,9 @@ export async function createServer(config) {
|
|
|
36
38
|
...(flags.mcpTasksEnabled ? {} : undefined),
|
|
37
39
|
},
|
|
38
40
|
});
|
|
39
|
-
const bridge = new BridgeManager(config);
|
|
41
|
+
const bridge = process.env.EASYEDA_BRIDGE === 'cdp' ? new CdpBridgeManager(config) : new BridgeManager(config);
|
|
40
42
|
await bridge.connect();
|
|
41
|
-
const stopHotSwapWatcher = startHotSwapWatcher(bridge, config);
|
|
43
|
+
const stopHotSwapWatcher = bridge instanceof BridgeManager ? startHotSwapWatcher(bridge, config) : undefined;
|
|
42
44
|
const registry = new ToolRegistry();
|
|
43
45
|
registry.setProfile(config.TOOL_PROFILE);
|
|
44
46
|
registerBuiltinTools(registry, config);
|
|
@@ -95,7 +97,7 @@ export async function createServer(config) {
|
|
|
95
97
|
bridgeTimeoutMs: config.BRIDGE_TIMEOUT_MS,
|
|
96
98
|
artifactDir: config.ARTIFACT_DIR,
|
|
97
99
|
bridgeHost: config.BRIDGE_HOST,
|
|
98
|
-
bridgePort: config.BRIDGE_PORT,
|
|
100
|
+
bridgePort: bridge.activePort || config.BRIDGE_PORT,
|
|
99
101
|
keylessSourcingEnabled: config.KEYLESS_SOURCING_ENABLED,
|
|
100
102
|
},
|
|
101
103
|
vendors: {
|
|
@@ -114,7 +116,7 @@ export async function createServer(config) {
|
|
|
114
116
|
const transport = new StdioServerTransport();
|
|
115
117
|
const shutdown = async () => {
|
|
116
118
|
logger.info('server shutting down');
|
|
117
|
-
stopHotSwapWatcher();
|
|
119
|
+
stopHotSwapWatcher?.();
|
|
118
120
|
storage.close();
|
|
119
121
|
bridge.disconnect('server shutdown');
|
|
120
122
|
await server.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/server/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAIjF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,kCAAkC,EAAE,MAAM,wBAAwB,CAAC;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAa1E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAiB;IAClD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEvC,MAAM,CAAC,IAAI,CACT;QACE,OAAO,EAAE,MAAM,CAAC,YAAY;QAC5B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,WAAW,EAAE,OAAO,CAAC,OAAO;QAC5B,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/server/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAIjF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,kCAAkC,EAAE,MAAM,wBAAwB,CAAC;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAa1E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAiB;IAClD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEvC,MAAM,CAAC,IAAI,CACT;QACE,OAAO,EAAE,MAAM,CAAC,YAAY;QAC5B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,WAAW,EAAE,OAAO,CAAC,OAAO;QAC5B,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;QAC1B,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW;KACvE,EACD,qBAAqB,CACtB,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;QACE,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,cAAc;KACxB,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,EAAE;YACX,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SAC5C;KACF,CACF,CAAC;IAEF,MAAM,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAClG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;IACvB,MAAM,kBAAkB,GACtB,MAAM,YAAY,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEpF,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,YAA2B,CAAC,CAAC;IACxD,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEvC,wBAAwB,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;IAChE,MAAM,WAAW,GAAG,qBAAqB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE5D,MAAM,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzF,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,KAAK,cAAc,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1F,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7E,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEhF,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,CAAC,UAAU,EAAE,CAAC;IAErB,MAAM,OAAO,GAAgB;QAC3B,OAAO,EAAE,MAAM,CAAC,YAA2B;QAC3C,MAAM,EAAE;YACN,IAAI,SAAS;gBACX,OAAO,MAAM,CAAC,SAAS,CAAC;YAC1B,CAAC;YACD,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;gBACnC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC;gBACxC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAC3C,CAAC;YACD,IAAI,QAAQ;gBACV,OAAO,MAAM,CAAC,QAAQ,CAAC;YACzB,CAAC;YACD,IAAI,UAAU;gBACZ,OAAO,MAAM,CAAC,UAAU,CAAC;YAC3B,CAAC;YACD,IAAI,eAAe;gBACjB,OAAO,MAAM,CAAC,eAAe,CAAC;YAChC,CAAC;YACD,IAAI,kBAAkB;gBACpB,OAAO,MAAM,CAAC,kBAAkB,CAAC;YACnC,CAAC;YACD,IAAI,cAAc;gBAChB,OAAO,MAAM,CAAC,cAAc,CAAC;YAC/B,CAAC;YACD,IAAI,gBAAgB;gBAClB,OAAO,MAAM,CAAC,gBAAgB,CAAC;YACjC,CAAC;YACD,IAAI,wBAAwB;gBAC1B,OAAO,MAAM,CAAC,wBAAwB,CAAC;YACzC,CAAC;YACD,IAAI,uBAAuB;gBACzB,OAAO,MAAM,CAAC,uBAAuB,CAAC;YACxC,CAAC;YACD,IAAI,aAAa;gBACf,OAAO,MAAM,CAAC,aAAa,CAAC;YAC9B,CAAC;YACD,IAAI,gBAAgB;gBAClB,OAAO,MAAM,CAAC,gBAAgB,CAAC;YACjC,CAAC;SACF;QACD,MAAM,EAAE;YACN,eAAe,EAAE,MAAM,CAAC,iBAAiB;YACzC,WAAW,EAAE,MAAM,CAAC,YAAY;YAChC,UAAU,EAAE,MAAM,CAAC,WAAW;YAC9B,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,WAAW;YACnD,sBAAsB,EAAE,MAAM,CAAC,wBAAwB;SACxD;QACD,OAAO,EAAE;YACP,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,aAAa;SACvB;QACD,OAAO;KACR,CAAC;IAEF,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,kCAAkC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEpD,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;QAChC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,cAAc,CAAC,CAAC;IAC/C,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpC,kBAAkB,EAAE,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QACrC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC7E,CAAC"}
|
|
Binary file
|
package/package.json
CHANGED