@noxfly/noxus 1.2.0 → 2.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/dist/main.mjs CHANGED
@@ -315,6 +315,21 @@ function getGuardForControllerAction(controllerName, actionName) {
315
315
  __name(getGuardForControllerAction, "getGuardForControllerAction");
316
316
  var authorizations = /* @__PURE__ */ new Map();
317
317
 
318
+ // src/decorators/injectable.metadata.ts
319
+ var INJECTABLE_METADATA_KEY = Symbol("INJECTABLE_METADATA_KEY");
320
+ function defineInjectableMetadata(target, lifetime) {
321
+ Reflect.defineMetadata(INJECTABLE_METADATA_KEY, lifetime, target);
322
+ }
323
+ __name(defineInjectableMetadata, "defineInjectableMetadata");
324
+ function getInjectableMetadata(target) {
325
+ return Reflect.getMetadata(INJECTABLE_METADATA_KEY, target);
326
+ }
327
+ __name(getInjectableMetadata, "getInjectableMetadata");
328
+ function hasInjectableMetadata(target) {
329
+ return Reflect.hasMetadata(INJECTABLE_METADATA_KEY, target);
330
+ }
331
+ __name(hasInjectableMetadata, "hasInjectableMetadata");
332
+
318
333
  // src/decorators/method.decorator.ts
319
334
  function createRouteDecorator(verb) {
320
335
  return (path) => {
@@ -562,16 +577,11 @@ function Injectable(lifetime = "scope") {
562
577
  if (typeof target !== "function" || !target.prototype) {
563
578
  throw new Error(`@Injectable can only be used on classes, not on ${typeof target}`);
564
579
  }
565
- Reflect.defineMetadata(INJECTABLE_METADATA_KEY, lifetime, target);
580
+ defineInjectableMetadata(target, lifetime);
566
581
  InjectorExplorer.register(target, lifetime);
567
582
  };
568
583
  }
569
584
  __name(Injectable, "Injectable");
570
- function getInjectableMetadata(target) {
571
- return Reflect.getMetadata(INJECTABLE_METADATA_KEY, target);
572
- }
573
- __name(getInjectableMetadata, "getInjectableMetadata");
574
- var INJECTABLE_METADATA_KEY = Symbol("INJECTABLE_METADATA_KEY");
575
585
 
576
586
  // src/decorators/controller.decorator.ts
577
587
  function Controller(path) {
@@ -625,8 +635,9 @@ var middlewares = /* @__PURE__ */ new Map();
625
635
  // src/request.ts
626
636
  import "reflect-metadata";
627
637
  var _Request = class _Request {
628
- constructor(event, id, method, path, body) {
638
+ constructor(event, senderId, id, method, path, body) {
629
639
  __publicField(this, "event");
640
+ __publicField(this, "senderId");
630
641
  __publicField(this, "id");
631
642
  __publicField(this, "method");
632
643
  __publicField(this, "path");
@@ -634,6 +645,7 @@ var _Request = class _Request {
634
645
  __publicField(this, "context", RootInjector.createScope());
635
646
  __publicField(this, "params", {});
636
647
  this.event = event;
648
+ this.senderId = senderId;
637
649
  this.id = id;
638
650
  this.method = method;
639
651
  this.path = path;
@@ -969,7 +981,7 @@ var _Router = class _Router {
969
981
  const batchResponses = [];
970
982
  for (const [index, item] of payload.requests.entries()) {
971
983
  const subRequestId = item.requestId ?? `${request.id}:${index}`;
972
- const atomicRequest = new Request(request.event, subRequestId, item.method, item.path, item.body);
984
+ const atomicRequest = new Request(request.event, request.senderId, subRequestId, item.method, item.path, item.body);
973
985
  batchResponses.push(await this.handleAtomic(atomicRequest));
974
986
  }
975
987
  response.body.responses = batchResponses;
@@ -1189,20 +1201,23 @@ function _ts_decorate2(decorators, target, key, desc) {
1189
1201
  __name(_ts_decorate2, "_ts_decorate");
1190
1202
  var _NoxSocket = class _NoxSocket {
1191
1203
  constructor() {
1192
- __publicField(this, "messagePorts", /* @__PURE__ */ new Map());
1204
+ __publicField(this, "channels", /* @__PURE__ */ new Map());
1193
1205
  }
1194
- register(senderId, channel) {
1195
- this.messagePorts.set(senderId, channel);
1206
+ register(senderId, requestChannel, socketChannel) {
1207
+ this.channels.set(senderId, {
1208
+ request: requestChannel,
1209
+ socket: socketChannel
1210
+ });
1196
1211
  }
1197
1212
  get(senderId) {
1198
- return this.messagePorts.get(senderId);
1213
+ return this.channels.get(senderId);
1199
1214
  }
1200
1215
  unregister(senderId) {
1201
- this.messagePorts.delete(senderId);
1216
+ this.channels.delete(senderId);
1202
1217
  }
1203
1218
  getSenderIds() {
1204
1219
  return [
1205
- ...this.messagePorts.keys()
1220
+ ...this.channels.keys()
1206
1221
  ];
1207
1222
  }
1208
1223
  emit(eventName, payload, targetSenderIds) {
@@ -1213,13 +1228,13 @@ var _NoxSocket = class _NoxSocket {
1213
1228
  const recipients = targetSenderIds ?? this.getSenderIds();
1214
1229
  let delivered = 0;
1215
1230
  for (const senderId of recipients) {
1216
- const channel = this.messagePorts.get(senderId);
1231
+ const channel = this.channels.get(senderId);
1217
1232
  if (!channel) {
1218
1233
  Logger.warn(`No message channel found for sender ID: ${senderId} while emitting "${normalizedEvent}".`);
1219
1234
  continue;
1220
1235
  }
1221
1236
  try {
1222
- channel.port1.postMessage(createRendererEventMessage(normalizedEvent, payload));
1237
+ channel.socket.port1.postMessage(createRendererEventMessage(normalizedEvent, payload));
1223
1238
  delivered++;
1224
1239
  } catch (error) {
1225
1240
  Logger.error(`[Noxus] Failed to emit "${normalizedEvent}" to sender ${senderId}.`, error);
@@ -1256,17 +1271,20 @@ var _NoxApp = class _NoxApp {
1256
1271
  __publicField(this, "router");
1257
1272
  __publicField(this, "socket");
1258
1273
  __publicField(this, "app");
1274
+ /**
1275
+ *
1276
+ */
1259
1277
  __publicField(this, "onRendererMessage", /* @__PURE__ */ __name(async (event) => {
1260
1278
  const { senderId, requestId, path, method, body } = event.data;
1261
- const channel = this.socket.get(senderId);
1262
- if (!channel) {
1279
+ const channels = this.socket.get(senderId);
1280
+ if (!channels) {
1263
1281
  Logger.error(`No message channel found for sender ID: ${senderId}`);
1264
1282
  return;
1265
1283
  }
1266
1284
  try {
1267
- const request = new Request(event, requestId, method, path, body);
1285
+ const request = new Request(event, senderId, requestId, method, path, body);
1268
1286
  const response = await this.router.handle(request);
1269
- channel.port1.postMessage(response);
1287
+ channels.request.port1.postMessage(response);
1270
1288
  } catch (err) {
1271
1289
  const response = {
1272
1290
  requestId,
@@ -1274,7 +1292,7 @@ var _NoxApp = class _NoxApp {
1274
1292
  body: null,
1275
1293
  error: err.message || "Internal Server Error"
1276
1294
  };
1277
- channel.port1.postMessage(response);
1295
+ channels.request.port1.postMessage(response);
1278
1296
  }
1279
1297
  }, "onRendererMessage"));
1280
1298
  this.router = router;
@@ -1303,14 +1321,17 @@ var _NoxApp = class _NoxApp {
1303
1321
  if (this.socket.get(senderId)) {
1304
1322
  this.shutdownChannel(senderId);
1305
1323
  }
1306
- const channel = new MessageChannelMain();
1307
- channel.port1.on("message", this.onRendererMessage);
1308
- channel.port1.start();
1309
- this.socket.register(senderId, channel);
1324
+ const requestChannel = new MessageChannelMain();
1325
+ const socketChannel = new MessageChannelMain();
1326
+ requestChannel.port1.on("message", this.onRendererMessage);
1327
+ requestChannel.port1.start();
1328
+ socketChannel.port1.start();
1329
+ this.socket.register(senderId, requestChannel, socketChannel);
1310
1330
  event.sender.postMessage("port", {
1311
1331
  senderId
1312
1332
  }, [
1313
- channel.port2
1333
+ requestChannel.port2,
1334
+ socketChannel.port2
1314
1335
  ]);
1315
1336
  }
1316
1337
  /**
@@ -1329,14 +1350,16 @@ var _NoxApp = class _NoxApp {
1329
1350
  * @param remove - Whether to remove the channel from the messagePorts map.
1330
1351
  */
1331
1352
  shutdownChannel(channelSenderId) {
1332
- const channel = this.socket.get(channelSenderId);
1333
- if (!channel) {
1353
+ const channels = this.socket.get(channelSenderId);
1354
+ if (!channels) {
1334
1355
  Logger.warn(`No message channel found for sender ID: ${channelSenderId}`);
1335
1356
  return;
1336
1357
  }
1337
- channel.port1.off("message", this.onRendererMessage);
1338
- channel.port1.close();
1339
- channel.port2.close();
1358
+ channels.request.port1.off("message", this.onRendererMessage);
1359
+ channels.request.port1.close();
1360
+ channels.request.port2.close();
1361
+ channels.socket.port1.close();
1362
+ channels.socket.port2.close();
1340
1363
  this.socket.unregister(channelSenderId);
1341
1364
  }
1342
1365
  /**
@@ -1407,6 +1430,42 @@ async function bootstrapApplication(rootModule) {
1407
1430
  }
1408
1431
  __name(bootstrapApplication, "bootstrapApplication");
1409
1432
 
1433
+ // src/preload-bridge.ts
1434
+ import { contextBridge, ipcRenderer } from "electron/renderer";
1435
+ var DEFAULT_EXPOSE_NAME = "noxus";
1436
+ var DEFAULT_INIT_EVENT = "init-port";
1437
+ var DEFAULT_REQUEST_CHANNEL = "gimme-my-port";
1438
+ var DEFAULT_RESPONSE_CHANNEL = "port";
1439
+ function exposeNoxusBridge(options = {}) {
1440
+ const { exposeAs = DEFAULT_EXPOSE_NAME, initMessageType = DEFAULT_INIT_EVENT, requestChannel = DEFAULT_REQUEST_CHANNEL, responseChannel = DEFAULT_RESPONSE_CHANNEL, targetWindow = window } = options;
1441
+ const api = {
1442
+ requestPort: /* @__PURE__ */ __name(() => {
1443
+ ipcRenderer.send(requestChannel);
1444
+ ipcRenderer.once(responseChannel, (event, message) => {
1445
+ const ports = (event.ports ?? []).filter((port) => port !== void 0);
1446
+ if (ports.length === 0) {
1447
+ console.error("[Noxus] No MessagePort received from main process.");
1448
+ return;
1449
+ }
1450
+ for (const port of ports) {
1451
+ try {
1452
+ port.start();
1453
+ } catch (error) {
1454
+ console.error("[Noxus] Failed to start MessagePort.", error);
1455
+ }
1456
+ }
1457
+ targetWindow.postMessage({
1458
+ type: initMessageType,
1459
+ senderId: message?.senderId
1460
+ }, "*", ports);
1461
+ });
1462
+ }, "requestPort")
1463
+ };
1464
+ contextBridge.exposeInMainWorld(exposeAs, api);
1465
+ return api;
1466
+ }
1467
+ __name(exposeNoxusBridge, "exposeNoxusBridge");
1468
+
1410
1469
  // src/renderer-events.ts
1411
1470
  var _RendererEventRegistry = class _RendererEventRegistry {
1412
1471
  constructor() {
@@ -1486,6 +1545,252 @@ var _RendererEventRegistry = class _RendererEventRegistry {
1486
1545
  };
1487
1546
  __name(_RendererEventRegistry, "RendererEventRegistry");
1488
1547
  var RendererEventRegistry = _RendererEventRegistry;
1548
+
1549
+ // src/renderer-client.ts
1550
+ var DEFAULT_INIT_EVENT2 = "init-port";
1551
+ var DEFAULT_BRIDGE_NAMES = [
1552
+ "noxus",
1553
+ "ipcRenderer"
1554
+ ];
1555
+ function defaultRequestId() {
1556
+ if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") {
1557
+ return crypto.randomUUID();
1558
+ }
1559
+ return `${Date.now().toString(16)}-${Math.floor(Math.random() * 1e8).toString(16)}`;
1560
+ }
1561
+ __name(defaultRequestId, "defaultRequestId");
1562
+ function normalizeBridgeNames(preferred) {
1563
+ const names = [];
1564
+ const add = /* @__PURE__ */ __name((name) => {
1565
+ if (!name) return;
1566
+ if (!names.includes(name)) {
1567
+ names.push(name);
1568
+ }
1569
+ }, "add");
1570
+ if (Array.isArray(preferred)) {
1571
+ for (const name of preferred) {
1572
+ add(name);
1573
+ }
1574
+ } else {
1575
+ add(preferred);
1576
+ }
1577
+ for (const fallback of DEFAULT_BRIDGE_NAMES) {
1578
+ add(fallback);
1579
+ }
1580
+ return names;
1581
+ }
1582
+ __name(normalizeBridgeNames, "normalizeBridgeNames");
1583
+ function resolveBridgeFromWindow(windowRef, preferred) {
1584
+ const names = normalizeBridgeNames(preferred);
1585
+ const globalRef = windowRef;
1586
+ if (!globalRef) {
1587
+ return null;
1588
+ }
1589
+ for (const name of names) {
1590
+ const candidate = globalRef[name];
1591
+ if (candidate && typeof candidate.requestPort === "function") {
1592
+ return candidate;
1593
+ }
1594
+ }
1595
+ return null;
1596
+ }
1597
+ __name(resolveBridgeFromWindow, "resolveBridgeFromWindow");
1598
+ var _NoxRendererClient = class _NoxRendererClient {
1599
+ constructor(options = {}) {
1600
+ __publicField(this, "events", new RendererEventRegistry());
1601
+ __publicField(this, "pendingRequests", /* @__PURE__ */ new Map());
1602
+ __publicField(this, "requestPort");
1603
+ __publicField(this, "socketPort");
1604
+ __publicField(this, "senderId");
1605
+ __publicField(this, "bridge");
1606
+ __publicField(this, "initMessageType");
1607
+ __publicField(this, "windowRef");
1608
+ __publicField(this, "generateRequestId");
1609
+ __publicField(this, "isReady", false);
1610
+ __publicField(this, "setupPromise");
1611
+ __publicField(this, "setupResolve");
1612
+ __publicField(this, "setupReject");
1613
+ __publicField(this, "onWindowMessage", /* @__PURE__ */ __name((event) => {
1614
+ if (event.data?.type !== this.initMessageType) {
1615
+ return;
1616
+ }
1617
+ if (!Array.isArray(event.ports) || event.ports.length < 2) {
1618
+ const error = new Error("[Noxus] Renderer expected two MessagePorts (request + socket).");
1619
+ console.error(error);
1620
+ this.setupReject?.(error);
1621
+ this.resetSetupState();
1622
+ return;
1623
+ }
1624
+ this.windowRef.removeEventListener("message", this.onWindowMessage);
1625
+ this.requestPort = event.ports[0];
1626
+ this.socketPort = event.ports[1];
1627
+ this.senderId = event.data.senderId;
1628
+ if (this.requestPort === void 0 || this.socketPort === void 0) {
1629
+ const error = new Error("[Noxus] Renderer failed to receive valid MessagePorts.");
1630
+ console.error(error);
1631
+ this.setupReject?.(error);
1632
+ this.resetSetupState();
1633
+ return;
1634
+ }
1635
+ this.attachRequestPort(this.requestPort);
1636
+ this.attachSocketPort(this.socketPort);
1637
+ this.isReady = true;
1638
+ this.setupResolve?.();
1639
+ this.resetSetupState(true);
1640
+ }, "onWindowMessage"));
1641
+ __publicField(this, "onSocketMessage", /* @__PURE__ */ __name((event) => {
1642
+ if (this.events.tryDispatchFromMessageEvent(event)) {
1643
+ return;
1644
+ }
1645
+ console.warn("[Noxus] Received a socket message that is not a renderer event payload.", event.data);
1646
+ }, "onSocketMessage"));
1647
+ __publicField(this, "onRequestMessage", /* @__PURE__ */ __name((event) => {
1648
+ if (this.events.tryDispatchFromMessageEvent(event)) {
1649
+ return;
1650
+ }
1651
+ const response = event.data;
1652
+ if (!response || typeof response.requestId !== "string") {
1653
+ console.error("[Noxus] Renderer received an invalid response payload.", response);
1654
+ return;
1655
+ }
1656
+ const pending = this.pendingRequests.get(response.requestId);
1657
+ if (!pending) {
1658
+ console.error(`[Noxus] No pending handler found for request ${response.requestId}.`);
1659
+ return;
1660
+ }
1661
+ this.pendingRequests.delete(response.requestId);
1662
+ this.onRequestCompleted(pending, response);
1663
+ if (response.status >= 400) {
1664
+ pending.reject(response);
1665
+ return;
1666
+ }
1667
+ pending.resolve(response.body);
1668
+ }, "onRequestMessage"));
1669
+ this.windowRef = options.windowRef ?? window;
1670
+ const resolvedBridge = options.bridge ?? resolveBridgeFromWindow(this.windowRef, options.bridgeName);
1671
+ this.bridge = resolvedBridge ?? null;
1672
+ this.initMessageType = options.initMessageType ?? DEFAULT_INIT_EVENT2;
1673
+ this.generateRequestId = options.generateRequestId ?? defaultRequestId;
1674
+ }
1675
+ async setup() {
1676
+ if (this.isReady) {
1677
+ return Promise.resolve();
1678
+ }
1679
+ if (this.setupPromise) {
1680
+ return this.setupPromise;
1681
+ }
1682
+ if (!this.bridge || typeof this.bridge.requestPort !== "function") {
1683
+ throw new Error("[Noxus] Renderer bridge is missing requestPort().");
1684
+ }
1685
+ this.setupPromise = new Promise((resolve, reject) => {
1686
+ this.setupResolve = resolve;
1687
+ this.setupReject = reject;
1688
+ });
1689
+ this.windowRef.addEventListener("message", this.onWindowMessage);
1690
+ this.bridge.requestPort();
1691
+ return this.setupPromise;
1692
+ }
1693
+ dispose() {
1694
+ this.windowRef.removeEventListener("message", this.onWindowMessage);
1695
+ this.requestPort?.close();
1696
+ this.socketPort?.close();
1697
+ this.requestPort = void 0;
1698
+ this.socketPort = void 0;
1699
+ this.senderId = void 0;
1700
+ this.isReady = false;
1701
+ this.pendingRequests.clear();
1702
+ }
1703
+ async request(request) {
1704
+ const senderId = this.senderId;
1705
+ const requestId = this.generateRequestId();
1706
+ if (senderId === void 0) {
1707
+ return Promise.reject(this.createErrorResponse(requestId, "MessagePort is not available"));
1708
+ }
1709
+ const readinessError = this.validateReady(requestId);
1710
+ if (readinessError) {
1711
+ return Promise.reject(readinessError);
1712
+ }
1713
+ const message = {
1714
+ requestId,
1715
+ senderId,
1716
+ ...request
1717
+ };
1718
+ return new Promise((resolve, reject) => {
1719
+ const pending = {
1720
+ resolve,
1721
+ reject: /* @__PURE__ */ __name((response) => reject(response), "reject"),
1722
+ request: message,
1723
+ submittedAt: Date.now()
1724
+ };
1725
+ this.pendingRequests.set(message.requestId, pending);
1726
+ this.requestPort.postMessage(message);
1727
+ });
1728
+ }
1729
+ async batch(requests) {
1730
+ return this.request({
1731
+ method: "BATCH",
1732
+ path: "",
1733
+ body: {
1734
+ requests
1735
+ }
1736
+ });
1737
+ }
1738
+ getSenderId() {
1739
+ return this.senderId;
1740
+ }
1741
+ onRequestCompleted(pending, response) {
1742
+ if (typeof console.groupCollapsed === "function") {
1743
+ console.groupCollapsed(`${response.status} ${pending.request.method} /${pending.request.path}`);
1744
+ }
1745
+ if (response.error) {
1746
+ console.error("error message:", response.error);
1747
+ }
1748
+ if (response.body !== void 0) {
1749
+ console.info("response:", response.body);
1750
+ }
1751
+ console.info("request:", pending.request);
1752
+ console.info(`Request duration: ${Date.now() - pending.submittedAt} ms`);
1753
+ if (typeof console.groupCollapsed === "function") {
1754
+ console.groupEnd();
1755
+ }
1756
+ }
1757
+ attachRequestPort(port) {
1758
+ port.onmessage = this.onRequestMessage;
1759
+ port.start();
1760
+ }
1761
+ attachSocketPort(port) {
1762
+ port.onmessage = this.onSocketMessage;
1763
+ port.start();
1764
+ }
1765
+ validateReady(requestId) {
1766
+ if (!this.isElectronEnvironment()) {
1767
+ return this.createErrorResponse(requestId, "Not running in Electron environment");
1768
+ }
1769
+ if (!this.requestPort) {
1770
+ return this.createErrorResponse(requestId, "MessagePort is not available");
1771
+ }
1772
+ return void 0;
1773
+ }
1774
+ createErrorResponse(requestId, message) {
1775
+ return {
1776
+ status: 500,
1777
+ requestId,
1778
+ error: message
1779
+ };
1780
+ }
1781
+ resetSetupState(success = false) {
1782
+ if (!success) {
1783
+ this.setupPromise = void 0;
1784
+ }
1785
+ this.setupResolve = void 0;
1786
+ this.setupReject = void 0;
1787
+ }
1788
+ isElectronEnvironment() {
1789
+ return typeof window !== "undefined" && /Electron/.test(window.navigator.userAgent);
1790
+ }
1791
+ };
1792
+ __name(_NoxRendererClient, "NoxRendererClient");
1793
+ var NoxRendererClient = _NoxRendererClient;
1489
1794
  export {
1490
1795
  AppInjector,
1491
1796
  Authorize,
@@ -1515,6 +1820,7 @@ export {
1515
1820
  NotFoundException,
1516
1821
  NotImplementedException,
1517
1822
  NoxApp,
1823
+ NoxRendererClient,
1518
1824
  NoxSocket,
1519
1825
  Patch,
1520
1826
  PaymentRequiredException,
@@ -1536,6 +1842,7 @@ export {
1536
1842
  VariantAlsoNegotiatesException,
1537
1843
  bootstrapApplication,
1538
1844
  createRendererEventMessage,
1845
+ exposeNoxusBridge,
1539
1846
  getControllerMetadata,
1540
1847
  getGuardForController,
1541
1848
  getGuardForControllerAction,
@@ -1544,6 +1851,7 @@ export {
1544
1851
  getMiddlewaresForControllerAction,
1545
1852
  getModuleMetadata,
1546
1853
  getRouteMetadata,
1854
+ hasInjectableMetadata,
1547
1855
  inject,
1548
1856
  isRendererEventMessage
1549
1857
  };
@@ -1 +1 @@
1
- export { o as IBatchRequestItem, p as IBatchRequestPayload, q as IBatchResponsePayload, s as IRendererEventMessage, n as IRequest, I as IResponse, r as RENDERER_EVENT_TYPE, v as RendererEventHandler, x as RendererEventRegistry, w as RendererEventSubscription, R as Request, t as createRendererEventMessage, u as isRendererEventMessage } from './index-5OkVPHfI.mjs';
1
+ export { p as IBatchRequestItem, q as IBatchRequestPayload, r as IBatchResponsePayload, b as IPortRequester, t as IRendererEventMessage, o as IRequest, I as IResponse, N as NoxRendererClient, s as RENDERER_EVENT_TYPE, z as RendererClientOptions, w as RendererEventHandler, y as RendererEventRegistry, x as RendererEventSubscription, R as Request, u as createRendererEventMessage, v as isRendererEventMessage } from './index-CI3OMzNR.mjs';
@@ -1 +1 @@
1
- export { o as IBatchRequestItem, p as IBatchRequestPayload, q as IBatchResponsePayload, s as IRendererEventMessage, n as IRequest, I as IResponse, r as RENDERER_EVENT_TYPE, v as RendererEventHandler, x as RendererEventRegistry, w as RendererEventSubscription, R as Request, t as createRendererEventMessage, u as isRendererEventMessage } from './index-5OkVPHfI.js';
1
+ export { p as IBatchRequestItem, q as IBatchRequestPayload, r as IBatchResponsePayload, b as IPortRequester, t as IRendererEventMessage, o as IRequest, I as IResponse, N as NoxRendererClient, s as RENDERER_EVENT_TYPE, z as RendererClientOptions, w as RendererEventHandler, y as RendererEventRegistry, x as RendererEventSubscription, R as Request, u as createRendererEventMessage, v as isRendererEventMessage } from './index-CI3OMzNR.js';