@zimi/remote 0.2.1 → 0.2.4

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.
Files changed (115) hide show
  1. package/LICENSE.md +21 -21
  2. package/README.md +289 -285
  3. package/dist/adaptor.d.mts +33 -0
  4. package/dist/adaptor.d.ts +5 -4
  5. package/dist/adaptor.js +1 -1
  6. package/dist/adaptor.js.map +1 -1
  7. package/dist/adaptor.mjs +1 -0
  8. package/dist/adaptor.mjs.map +1 -0
  9. package/dist/adaptors/dao3/client.d.mts +39 -0
  10. package/dist/adaptors/dao3/client.d.ts +5 -3
  11. package/dist/adaptors/dao3/client.js +1 -44
  12. package/dist/adaptors/dao3/client.js.map +1 -1
  13. package/dist/adaptors/dao3/client.mjs +2 -0
  14. package/dist/adaptors/dao3/client.mjs.map +1 -0
  15. package/dist/adaptors/dao3/server.d.mts +82 -0
  16. package/dist/adaptors/dao3/server.d.ts +5 -3
  17. package/dist/adaptors/dao3/server.js +1 -104
  18. package/dist/adaptors/dao3/server.js.map +1 -1
  19. package/dist/adaptors/dao3/server.mjs +2 -0
  20. package/dist/adaptors/dao3/server.mjs.map +1 -0
  21. package/dist/adaptors/electron/constants.d.mts +5 -0
  22. package/dist/adaptors/electron/constants.d.ts +5 -0
  23. package/dist/adaptors/electron/constants.js +2 -0
  24. package/dist/adaptors/electron/constants.js.map +1 -0
  25. package/dist/adaptors/electron/constants.mjs +2 -0
  26. package/dist/adaptors/electron/constants.mjs.map +1 -0
  27. package/dist/adaptors/electron/main.d.mts +10 -0
  28. package/dist/adaptors/electron/main.d.ts +10 -0
  29. package/dist/adaptors/electron/main.js +2 -0
  30. package/dist/adaptors/electron/main.js.map +1 -0
  31. package/dist/adaptors/electron/main.mjs +2 -0
  32. package/dist/adaptors/electron/main.mjs.map +1 -0
  33. package/dist/adaptors/electron/messenger.d.mts +8 -0
  34. package/dist/adaptors/electron/messenger.d.ts +8 -0
  35. package/dist/adaptors/electron/messenger.js +2 -0
  36. package/dist/adaptors/electron/messenger.js.map +1 -0
  37. package/dist/adaptors/electron/messenger.mjs +2 -0
  38. package/dist/adaptors/electron/messenger.mjs.map +1 -0
  39. package/dist/adaptors/electron/preload.d.mts +6 -0
  40. package/dist/adaptors/electron/preload.d.ts +6 -0
  41. package/dist/adaptors/electron/preload.js +2 -0
  42. package/dist/adaptors/electron/preload.js.map +1 -0
  43. package/dist/adaptors/electron/preload.mjs +2 -0
  44. package/dist/adaptors/electron/preload.mjs.map +1 -0
  45. package/dist/adaptors/electron/renderer.d.mts +9 -0
  46. package/dist/adaptors/electron/renderer.d.ts +9 -0
  47. package/dist/adaptors/electron/renderer.js +2 -0
  48. package/dist/adaptors/electron/renderer.js.map +1 -0
  49. package/dist/adaptors/electron/renderer.mjs +2 -0
  50. package/dist/adaptors/electron/renderer.mjs.map +1 -0
  51. package/dist/adaptors/http.d.mts +15 -0
  52. package/dist/adaptors/http.d.ts +6 -4
  53. package/dist/adaptors/http.js +1 -26
  54. package/dist/adaptors/http.js.map +1 -1
  55. package/dist/adaptors/http.mjs +2 -0
  56. package/dist/adaptors/http.mjs.map +1 -0
  57. package/dist/adaptors/iframe.d.mts +7 -0
  58. package/dist/adaptors/iframe.d.ts +5 -2
  59. package/dist/adaptors/iframe.js +1 -38
  60. package/dist/adaptors/iframe.js.map +1 -1
  61. package/dist/adaptors/iframe.mjs +2 -0
  62. package/dist/adaptors/iframe.mjs.map +1 -0
  63. package/dist/index.d.mts +16 -0
  64. package/dist/index.d.ts +16 -10
  65. package/dist/index.js +1 -9
  66. package/dist/index.js.map +1 -1
  67. package/dist/index.mjs +2 -0
  68. package/dist/index.mjs.map +1 -0
  69. package/dist/remote.d.mts +81 -0
  70. package/dist/remote.d.ts +6 -4
  71. package/dist/remote.js +1 -196
  72. package/dist/remote.js.map +1 -1
  73. package/dist/remote.mjs +2 -0
  74. package/dist/remote.mjs.map +1 -0
  75. package/dist/remoteValue/exposeToRemote.d.mts +43 -0
  76. package/dist/remoteValue/exposeToRemote.d.ts +7 -5
  77. package/dist/remoteValue/exposeToRemote.js +1 -52
  78. package/dist/remoteValue/exposeToRemote.js.map +1 -1
  79. package/dist/remoteValue/exposeToRemote.mjs +2 -0
  80. package/dist/remoteValue/exposeToRemote.mjs.map +1 -0
  81. package/dist/remoteValue/remoteValue.d.mts +29 -0
  82. package/dist/remoteValue/remoteValue.d.ts +6 -4
  83. package/dist/remoteValue/remoteValue.js +1 -67
  84. package/dist/remoteValue/remoteValue.js.map +1 -1
  85. package/dist/remoteValue/remoteValue.mjs +2 -0
  86. package/dist/remoteValue/remoteValue.mjs.map +1 -0
  87. package/dist/remoteValue/type.d.mts +67 -0
  88. package/dist/remoteValue/type.d.ts +20 -19
  89. package/dist/remoteValue/type.js +1 -1
  90. package/dist/remoteValue/type.js.map +1 -1
  91. package/dist/remoteValue/type.mjs +1 -0
  92. package/dist/remoteValue/type.mjs.map +1 -0
  93. package/dist/response.d.mts +105 -0
  94. package/dist/response.d.ts +6 -5
  95. package/dist/response.js +1 -154
  96. package/dist/response.js.map +1 -1
  97. package/dist/response.mjs +2 -0
  98. package/dist/response.mjs.map +1 -0
  99. package/package.json +31 -24
  100. package/src/adaptor.ts +34 -34
  101. package/src/adaptors/dao3/client.ts +53 -53
  102. package/src/adaptors/dao3/server.ts +136 -136
  103. package/src/adaptors/electron/constants.ts +3 -0
  104. package/src/adaptors/electron/main.ts +59 -0
  105. package/src/adaptors/electron/messenger.ts +13 -0
  106. package/src/adaptors/electron/preload.ts +21 -0
  107. package/src/adaptors/electron/renderer.ts +52 -0
  108. package/src/adaptors/http.ts +31 -31
  109. package/src/adaptors/iframe.ts +47 -47
  110. package/src/index.ts +17 -12
  111. package/src/remote.ts +263 -260
  112. package/src/remoteValue/exposeToRemote.ts +102 -102
  113. package/src/remoteValue/remoteValue.ts +94 -94
  114. package/src/remoteValue/type.ts +124 -124
  115. package/src/response.ts +170 -170
package/dist/adaptor.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export interface AdaptorPackageData<D = unknown> {
1
+ interface AdaptorPackageData<D = unknown> {
2
2
  /**
3
3
  * 自身设备 id,应确保唯一性(对方能凭借该 deviceId 找到该设备)
4
4
  */
@@ -18,8 +18,8 @@ export interface AdaptorPackageData<D = unknown> {
18
18
  callbackName?: string;
19
19
  }
20
20
  type Func<D = unknown, R = unknown> = (data: D) => R;
21
- export type AdaptorCallback = Func<AdaptorPackageData, void>;
22
- export interface Adaptor {
21
+ type AdaptorCallback = Func<AdaptorPackageData, void>;
22
+ interface Adaptor {
23
23
  every: (callback: AdaptorCallback) => void;
24
24
  /**
25
25
  * off 用于移除 once 注册的事件,当事件超时后,需要主动 off
@@ -29,4 +29,5 @@ export interface Adaptor {
29
29
  once: (name: string, callback: AdaptorCallback) => void;
30
30
  emit: (data: AdaptorPackageData) => void;
31
31
  }
32
- export {};
32
+
33
+ export type { Adaptor, AdaptorCallback, AdaptorPackageData };
package/dist/adaptor.js CHANGED
@@ -1,2 +1,2 @@
1
- export {};
1
+ "use strict";var c=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var i=(t,a,o,n)=>{if(a&&typeof a=="object"||typeof a=="function")for(let e of d(a))!l.call(t,e)&&e!==o&&c(t,e,{get:()=>a[e],enumerable:!(n=r(a,e))||n.enumerable});return t};var k=t=>i(c({},"__esModule",{value:!0}),t);var p={};module.exports=k(p);
2
2
  //# sourceMappingURL=adaptor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adaptor.js","sourceRoot":"","sources":["../src/adaptor.ts"],"names":[],"mappings":""}
1
+ {"version":3,"sources":["../src/adaptor.ts"],"sourcesContent":["export interface AdaptorPackageData<D = unknown> {\r\n /**\r\n * 自身设备 id,应确保唯一性(对方能凭借该 deviceId 找到该设备)\r\n */\r\n deviceId: string\r\n /**\r\n * 对方的设备 id\r\n */\r\n targetDeviceId: string\r\n /**\r\n * 远程调用的对方的方法名\r\n */\r\n name: string\r\n data: D\r\n /**\r\n * 所需回调的方法名(如果需要回调的话)\r\n */\r\n callbackName?: string\r\n}\r\n\r\ntype Func<D = unknown, R = unknown> = (data: D) => R\r\n\r\nexport type AdaptorCallback = Func<AdaptorPackageData, void>\r\n\r\nexport interface Adaptor {\r\n every: (callback: AdaptorCallback) => void\r\n /**\r\n * off 用于移除 once 注册的事件,当事件超时后,需要主动 off\r\n */\r\n off: (name: string, callback: AdaptorCallback) => void\r\n on: (name: string, callback: AdaptorCallback) => void\r\n once: (name: string, callback: AdaptorCallback) => void\r\n emit: (data: AdaptorPackageData) => void\r\n}\r\n"],"mappings":"+WAAA,IAAAA,EAAA,kBAAAC,EAAAD","names":["adaptor_exports","__toCommonJS"]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=adaptor.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,39 @@
1
+ import EventEmitter from 'eventemitter3';
2
+ import { AdaptorPackageData } from '../../adaptor.mjs';
3
+
4
+ interface RemoteChannel {
5
+ onClientEvent(fn: (e: unknown) => void): void;
6
+ }
7
+ /**
8
+ * 这是 [dao3 游戏](https://dao3.fun/) 代码客户端适配器。
9
+ * ```ts
10
+ * const remoteManager = new ClientSideRemoteChannelEventManager(remoteChannel)
11
+ *
12
+ * export const remoteAdaptor = {
13
+ * every: remoteManager.onEvery.bind(remoteManager),
14
+ * off: remoteManager.off.bind(remoteManager),
15
+ * on: remoteManager.on.bind(remoteManager),
16
+ * once: remoteManager.once.bind(remoteManager),
17
+ * emit: (e) => {
18
+ * remoteChannel.sendServerEvent(e)
19
+ * },
20
+ * } satisfies Adaptor
21
+ *
22
+ * export const remote = new Remote<RemoteFuncsFromClient, RemoteFuncsFromServer>(
23
+ * remoteAdaptor,
24
+ * {
25
+ * deviceId: `client-${Math.random().toString(36).slice(2)}`,
26
+ * }
27
+ * )
28
+ *
29
+ * void remote._.initConnection()
30
+ * ```
31
+ */
32
+ declare class ClientSideRemoteChannelEventManager extends EventEmitter<{
33
+ [key: string]: [AdaptorPackageData];
34
+ }> {
35
+ constructor(remoteChannel: RemoteChannel);
36
+ onEvery(fn: (args: AdaptorPackageData) => void): void;
37
+ }
38
+
39
+ export { ClientSideRemoteChannelEventManager };
@@ -1,5 +1,6 @@
1
1
  import EventEmitter from 'eventemitter3';
2
- import { type AdaptorPackageData } from '../../adaptor';
2
+ import { AdaptorPackageData } from '../../adaptor.js';
3
+
3
4
  interface RemoteChannel {
4
5
  onClientEvent(fn: (e: unknown) => void): void;
5
6
  }
@@ -28,10 +29,11 @@ interface RemoteChannel {
28
29
  * void remote._.initConnection()
29
30
  * ```
30
31
  */
31
- export declare class ClientSideRemoteChannelEventManager extends EventEmitter<{
32
+ declare class ClientSideRemoteChannelEventManager extends EventEmitter<{
32
33
  [key: string]: [AdaptorPackageData];
33
34
  }> {
34
35
  constructor(remoteChannel: RemoteChannel);
35
36
  onEvery(fn: (args: AdaptorPackageData) => void): void;
36
37
  }
37
- export {};
38
+
39
+ export { ClientSideRemoteChannelEventManager };
@@ -1,45 +1,2 @@
1
- import EventEmitter from 'eventemitter3';
2
- import { isRemoteAdaptorData } from '../../remote';
3
- /**
4
- * 这是 [dao3 游戏](https://dao3.fun/) 代码客户端适配器。
5
- * ```ts
6
- * const remoteManager = new ClientSideRemoteChannelEventManager(remoteChannel)
7
- *
8
- * export const remoteAdaptor = {
9
- * every: remoteManager.onEvery.bind(remoteManager),
10
- * off: remoteManager.off.bind(remoteManager),
11
- * on: remoteManager.on.bind(remoteManager),
12
- * once: remoteManager.once.bind(remoteManager),
13
- * emit: (e) => {
14
- * remoteChannel.sendServerEvent(e)
15
- * },
16
- * } satisfies Adaptor
17
- *
18
- * export const remote = new Remote<RemoteFuncsFromClient, RemoteFuncsFromServer>(
19
- * remoteAdaptor,
20
- * {
21
- * deviceId: `client-${Math.random().toString(36).slice(2)}`,
22
- * }
23
- * )
24
- *
25
- * void remote._.initConnection()
26
- * ```
27
- */
28
- export class ClientSideRemoteChannelEventManager extends EventEmitter {
29
- constructor(remoteChannel) {
30
- super();
31
- remoteChannel.onClientEvent((e) => {
32
- if (!isRemoteAdaptorData(e)) {
33
- return;
34
- }
35
- if (!e.name.startsWith('__REMOTE_VALUE_REQ__')) {
36
- this.emit('__remote_every__', e);
37
- }
38
- this.emit(e.name, e);
39
- });
40
- }
41
- onEvery(fn) {
42
- this.on('__remote_every__', fn);
43
- }
44
- }
1
+ "use strict";var s=Object.create;var o=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,E=Object.prototype.hasOwnProperty;var c=(e,t)=>{for(var a in t)o(e,a,{get:t[a],enumerable:!0})},i=(e,t,a,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of d(t))!E.call(e,n)&&n!==a&&o(e,n,{get:()=>t[n],enumerable:!(r=v(t,n))||r.enumerable});return e};var f=(e,t,a)=>(a=e!=null?s(p(e)):{},i(t||!e||!e.__esModule?o(a,"default",{value:e,enumerable:!0}):a,e)),h=e=>i(o({},"__esModule",{value:!0}),e);var g={};c(g,{ClientSideRemoteChannelEventManager:()=>l});module.exports=h(g);var m=f(require("eventemitter3")),_=require("../../remote");class l extends m.default{constructor(t){super(),t.onClientEvent(a=>{(0,_.isRemoteAdaptorData)(a)&&(a.name.startsWith("__REMOTE_VALUE_REQ__")||this.emit("__remote_every__",a),this.emit(a.name,a))})}onEvery(t){this.on("__remote_every__",t)}}0&&(module.exports={ClientSideRemoteChannelEventManager});
45
2
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/adaptors/dao3/client.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAOlD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,OAAO,mCAAoC,SAAQ,YAEvD;IACA,YAAY,aAA4B;QACtC,KAAK,EAAE,CAAA;QACP,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE;YAChC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5B,OAAM;YACR,CAAC;YACD,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,CAAC;gBAC/C,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAA;YAClC,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QACtB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,CAAC,EAAsC;QAC5C,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAA;IACjC,CAAC;CACF"}
1
+ {"version":3,"sources":["../../../src/adaptors/dao3/client.ts"],"sourcesContent":["import EventEmitter from 'eventemitter3'\r\nimport { isRemoteAdaptorData } from '../../remote'\r\nimport { type AdaptorPackageData } from '../../adaptor'\r\n\r\ninterface RemoteChannel {\r\n onClientEvent(fn: (e: unknown) => void): void\r\n}\r\n\r\n/**\r\n * 这是 [dao3 游戏](https://dao3.fun/) 代码客户端适配器。\r\n * ```ts\r\n * const remoteManager = new ClientSideRemoteChannelEventManager(remoteChannel)\r\n *\r\n * export const remoteAdaptor = {\r\n * every: remoteManager.onEvery.bind(remoteManager),\r\n * off: remoteManager.off.bind(remoteManager),\r\n * on: remoteManager.on.bind(remoteManager),\r\n * once: remoteManager.once.bind(remoteManager),\r\n * emit: (e) => {\r\n * remoteChannel.sendServerEvent(e)\r\n * },\r\n * } satisfies Adaptor\r\n *\r\n * export const remote = new Remote<RemoteFuncsFromClient, RemoteFuncsFromServer>(\r\n * remoteAdaptor,\r\n * {\r\n * deviceId: `client-${Math.random().toString(36).slice(2)}`,\r\n * }\r\n * )\r\n *\r\n * void remote._.initConnection()\r\n * ```\r\n */\r\nexport class ClientSideRemoteChannelEventManager extends EventEmitter<{\r\n [key: string]: [AdaptorPackageData]\r\n}> {\r\n constructor(remoteChannel: RemoteChannel) {\r\n super()\r\n remoteChannel.onClientEvent((e) => {\r\n if (!isRemoteAdaptorData(e)) {\r\n return\r\n }\r\n if (!e.name.startsWith('__REMOTE_VALUE_REQ__')) {\r\n this.emit('__remote_every__', e)\r\n }\r\n this.emit(e.name, e)\r\n })\r\n }\r\n\r\n onEvery(fn: (args: AdaptorPackageData) => void): void {\r\n this.on('__remote_every__', fn)\r\n }\r\n}\r\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAyB,4BACzBC,EAAoC,wBAgC7B,MAAMH,UAA4C,EAAAI,OAEtD,CACD,YAAYC,EAA8B,CACxC,MAAM,EACNA,EAAc,cAAeC,GAAM,IAC5B,uBAAoBA,CAAC,IAGrBA,EAAE,KAAK,WAAW,sBAAsB,GAC3C,KAAK,KAAK,mBAAoBA,CAAC,EAEjC,KAAK,KAAKA,EAAE,KAAMA,CAAC,EACrB,CAAC,CACH,CAEA,QAAQC,EAA8C,CACpD,KAAK,GAAG,mBAAoBA,CAAE,CAChC,CACF","names":["client_exports","__export","ClientSideRemoteChannelEventManager","__toCommonJS","import_eventemitter3","import_remote","EventEmitter","remoteChannel","e","fn"]}
@@ -0,0 +1,2 @@
1
+ import a from"eventemitter3";import{isRemoteAdaptorData as n}from"../../remote";class _ extends a{constructor(t){super(),t.onClientEvent(e=>{n(e)&&(e.name.startsWith("__REMOTE_VALUE_REQ__")||this.emit("__remote_every__",e),this.emit(e.name,e))})}onEvery(t){this.on("__remote_every__",t)}}export{_ as ClientSideRemoteChannelEventManager};
2
+ //# sourceMappingURL=client.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/adaptors/dao3/client.ts"],"sourcesContent":["import EventEmitter from 'eventemitter3'\r\nimport { isRemoteAdaptorData } from '../../remote'\r\nimport { type AdaptorPackageData } from '../../adaptor'\r\n\r\ninterface RemoteChannel {\r\n onClientEvent(fn: (e: unknown) => void): void\r\n}\r\n\r\n/**\r\n * 这是 [dao3 游戏](https://dao3.fun/) 代码客户端适配器。\r\n * ```ts\r\n * const remoteManager = new ClientSideRemoteChannelEventManager(remoteChannel)\r\n *\r\n * export const remoteAdaptor = {\r\n * every: remoteManager.onEvery.bind(remoteManager),\r\n * off: remoteManager.off.bind(remoteManager),\r\n * on: remoteManager.on.bind(remoteManager),\r\n * once: remoteManager.once.bind(remoteManager),\r\n * emit: (e) => {\r\n * remoteChannel.sendServerEvent(e)\r\n * },\r\n * } satisfies Adaptor\r\n *\r\n * export const remote = new Remote<RemoteFuncsFromClient, RemoteFuncsFromServer>(\r\n * remoteAdaptor,\r\n * {\r\n * deviceId: `client-${Math.random().toString(36).slice(2)}`,\r\n * }\r\n * )\r\n *\r\n * void remote._.initConnection()\r\n * ```\r\n */\r\nexport class ClientSideRemoteChannelEventManager extends EventEmitter<{\r\n [key: string]: [AdaptorPackageData]\r\n}> {\r\n constructor(remoteChannel: RemoteChannel) {\r\n super()\r\n remoteChannel.onClientEvent((e) => {\r\n if (!isRemoteAdaptorData(e)) {\r\n return\r\n }\r\n if (!e.name.startsWith('__REMOTE_VALUE_REQ__')) {\r\n this.emit('__remote_every__', e)\r\n }\r\n this.emit(e.name, e)\r\n })\r\n }\r\n\r\n onEvery(fn: (args: AdaptorPackageData) => void): void {\r\n this.on('__remote_every__', fn)\r\n }\r\n}\r\n"],"mappings":"AAAA,OAAOA,MAAkB,gBACzB,OAAS,uBAAAC,MAA2B,eAgC7B,MAAMC,UAA4CF,CAEtD,CACD,YAAYG,EAA8B,CACxC,MAAM,EACNA,EAAc,cAAe,GAAM,CAC5BF,EAAoB,CAAC,IAGrB,EAAE,KAAK,WAAW,sBAAsB,GAC3C,KAAK,KAAK,mBAAoB,CAAC,EAEjC,KAAK,KAAK,EAAE,KAAM,CAAC,EACrB,CAAC,CACH,CAEA,QAAQG,EAA8C,CACpD,KAAK,GAAG,mBAAoBA,CAAE,CAChC,CACF","names":["EventEmitter","isRemoteAdaptorData","ClientSideRemoteChannelEventManager","remoteChannel","fn"]}
@@ -0,0 +1,82 @@
1
+ import EventEmitter from 'eventemitter3';
2
+ import { AdaptorPackageData } from '../../adaptor.mjs';
3
+
4
+ interface GamePlayerEntityLike {
5
+ player: {
6
+ userKey: string;
7
+ };
8
+ }
9
+ interface RemoteChannel<T extends GamePlayerEntityLike> {
10
+ onServerEvent(fn: (e: {
11
+ args: unknown;
12
+ entity: T;
13
+ }) => void): void;
14
+ }
15
+ /**
16
+ * 这是 [dao3 游戏](https://dao3.fun/) 代码服务端适配器。
17
+ * ```ts
18
+ * const remoteManager = new ServerSideRemoteChannelEventManager(remoteChannel)
19
+ *
20
+ * world.onPlayerLeave(
21
+ * remoteManager.onPlayerLeave.bind(remoteManager)
22
+ * )
23
+ *
24
+ * export const remoteAdaptor = {
25
+ * every: remoteManager.onEvery.bind(remoteManager),
26
+ * off: remoteManager.off.bind(remoteManager),
27
+ * on: remoteManager.on.bind(remoteManager),
28
+ * once: remoteManager.once.bind(remoteManager),
29
+ * emit: (e) => {
30
+ * const entity = remoteManager.getEntity(e.targetDeviceId)
31
+ * if (!entity) {
32
+ * console.error('entity not found')
33
+ * return
34
+ * }
35
+ * remoteChannel.sendClientEvent(entity, e as unknown as JSONValue)
36
+ * },
37
+ * } satisfies Adaptor
38
+ *
39
+ * export const remote = new Remote<RemoteFuncsFromServer, RemoteFuncsFromClient>(
40
+ * remoteAdaptor,
41
+ * {
42
+ * deviceId: 'server',
43
+ * }
44
+ * )
45
+ *
46
+ * remote.register('initConnection', async () => {
47
+ * // 什么也不干,单纯的让客户端在服务端“备案”
48
+ * })
49
+ *
50
+ * export const getEntity = remoteManager.getEntity.bind(remoteManager)
51
+ * export const getIdByEntity = remoteManager.getIdByEntity.bind(remoteManager)
52
+ * export const waitForRegister = remoteManager.waitForRegister.bind(remoteManager)
53
+ * export const remoteTo = remoteManager.remoteTo.bind(remoteManager)
54
+ * ```
55
+ */
56
+ declare class ServerSideRemoteChannelEventManager<T extends GamePlayerEntityLike> extends EventEmitter<{
57
+ [key: string]: [AdaptorPackageData];
58
+ }> {
59
+ entityMap: [string, T][];
60
+ constructor(remoteChannel: RemoteChannel<T>);
61
+ onPlayerLeave(e: {
62
+ entity: T;
63
+ }): void;
64
+ onEvery(fn: (args: AdaptorPackageData) => void): void;
65
+ waitForRegister(entity: T): Promise<void>;
66
+ getEntity(deviceId: string): T | undefined;
67
+ getIdByEntity(entity: T): string | undefined;
68
+ remoteTo(config: {
69
+ target: T;
70
+ }): {
71
+ targetDeviceId: string;
72
+ };
73
+ remoteTo(config: {
74
+ target: T;
75
+ timeoutMs: number;
76
+ }): {
77
+ targetDeviceId: string;
78
+ timeoutMs: number;
79
+ };
80
+ }
81
+
82
+ export { ServerSideRemoteChannelEventManager };
@@ -1,5 +1,6 @@
1
1
  import EventEmitter from 'eventemitter3';
2
- import { type AdaptorPackageData } from '../../adaptor';
2
+ import { AdaptorPackageData } from '../../adaptor.js';
3
+
3
4
  interface GamePlayerEntityLike {
4
5
  player: {
5
6
  userKey: string;
@@ -52,7 +53,7 @@ interface RemoteChannel<T extends GamePlayerEntityLike> {
52
53
  * export const remoteTo = remoteManager.remoteTo.bind(remoteManager)
53
54
  * ```
54
55
  */
55
- export declare class ServerSideRemoteChannelEventManager<T extends GamePlayerEntityLike> extends EventEmitter<{
56
+ declare class ServerSideRemoteChannelEventManager<T extends GamePlayerEntityLike> extends EventEmitter<{
56
57
  [key: string]: [AdaptorPackageData];
57
58
  }> {
58
59
  entityMap: [string, T][];
@@ -77,4 +78,5 @@ export declare class ServerSideRemoteChannelEventManager<T extends GamePlayerEnt
77
78
  timeoutMs: number;
78
79
  };
79
80
  }
80
- export {};
81
+
82
+ export { ServerSideRemoteChannelEventManager };
@@ -1,105 +1,2 @@
1
- import EventEmitter from 'eventemitter3';
2
- import { isRemoteAdaptorData } from '../../remote';
3
- import { isRemoteValueEvent } from '../../remoteValue/exposeToRemote';
4
- /**
5
- * 这是 [dao3 游戏](https://dao3.fun/) 代码服务端适配器。
6
- * ```ts
7
- * const remoteManager = new ServerSideRemoteChannelEventManager(remoteChannel)
8
- *
9
- * world.onPlayerLeave(
10
- * remoteManager.onPlayerLeave.bind(remoteManager)
11
- * )
12
- *
13
- * export const remoteAdaptor = {
14
- * every: remoteManager.onEvery.bind(remoteManager),
15
- * off: remoteManager.off.bind(remoteManager),
16
- * on: remoteManager.on.bind(remoteManager),
17
- * once: remoteManager.once.bind(remoteManager),
18
- * emit: (e) => {
19
- * const entity = remoteManager.getEntity(e.targetDeviceId)
20
- * if (!entity) {
21
- * console.error('entity not found')
22
- * return
23
- * }
24
- * remoteChannel.sendClientEvent(entity, e as unknown as JSONValue)
25
- * },
26
- * } satisfies Adaptor
27
- *
28
- * export const remote = new Remote<RemoteFuncsFromServer, RemoteFuncsFromClient>(
29
- * remoteAdaptor,
30
- * {
31
- * deviceId: 'server',
32
- * }
33
- * )
34
- *
35
- * remote.register('initConnection', async () => {
36
- * // 什么也不干,单纯的让客户端在服务端“备案”
37
- * })
38
- *
39
- * export const getEntity = remoteManager.getEntity.bind(remoteManager)
40
- * export const getIdByEntity = remoteManager.getIdByEntity.bind(remoteManager)
41
- * export const waitForRegister = remoteManager.waitForRegister.bind(remoteManager)
42
- * export const remoteTo = remoteManager.remoteTo.bind(remoteManager)
43
- * ```
44
- */
45
- export class ServerSideRemoteChannelEventManager extends EventEmitter {
46
- constructor(remoteChannel) {
47
- super();
48
- Object.defineProperty(this, "entityMap", {
49
- enumerable: true,
50
- configurable: true,
51
- writable: true,
52
- value: []
53
- });
54
- remoteChannel.onServerEvent((e) => {
55
- const { args } = e;
56
- if (!isRemoteAdaptorData(args)) {
57
- return;
58
- }
59
- const prevItem = this.entityMap.find((item) => item[1].player.userKey === e.entity.player.userKey);
60
- if (prevItem) {
61
- prevItem[0] = args.deviceId;
62
- prevItem[1] = e.entity;
63
- }
64
- else {
65
- this.entityMap.push([args.deviceId, e.entity]);
66
- }
67
- if (!isRemoteValueEvent(args.name)) {
68
- this.emit('__remote_every__', args);
69
- }
70
- this.emit(args.name, args);
71
- });
72
- }
73
- onPlayerLeave(e) {
74
- this.entityMap = this.entityMap.filter((item) => item[1].player.userKey !== e.entity.player.userKey);
75
- }
76
- onEvery(fn) {
77
- this.on('__remote_every__', fn);
78
- }
79
- waitForRegister(entity) {
80
- return new Promise((resolve) => {
81
- if (this.entityMap.some(([_, en]) => en.player.userKey === entity.player.userKey)) {
82
- resolve();
83
- return;
84
- }
85
- this.once('__remote_every__', () => {
86
- resolve();
87
- });
88
- });
89
- }
90
- getEntity(deviceId) {
91
- var _a;
92
- return (_a = this.entityMap.find((item) => item[0] === deviceId)) === null || _a === void 0 ? void 0 : _a[1];
93
- }
94
- getIdByEntity(entity) {
95
- var _a;
96
- return (_a = this.entityMap.find((item) => item[1].player.userKey === entity.player.userKey)) === null || _a === void 0 ? void 0 : _a[0];
97
- }
98
- remoteTo({ target, ...rest }) {
99
- return {
100
- targetDeviceId: this.getIdByEntity(target),
101
- ...rest,
102
- };
103
- }
104
- }
1
+ "use strict";var d=Object.create;var a=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var v=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var l=(r,t)=>{for(var e in t)a(r,e,{get:t[e],enumerable:!0})},o=(r,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of g(t))!f.call(r,n)&&n!==e&&a(r,n,{get:()=>t[n],enumerable:!(i=u(t,n))||i.enumerable});return r};var c=(r,t,e)=>(e=r!=null?d(v(r)):{},o(t||!r||!r.__esModule?a(e,"default",{value:r,enumerable:!0}):e,r)),h=r=>o(a({},"__esModule",{value:!0}),r);var T={};l(T,{ServerSideRemoteChannelEventManager:()=>_});module.exports=h(T);var y=c(require("eventemitter3")),s=require("../../remote"),m=require("../../remoteValue/exposeToRemote");class _ extends y.default{entityMap=[];constructor(t){super(),t.onServerEvent(e=>{const{args:i}=e;if(!(0,s.isRemoteAdaptorData)(i))return;const n=this.entityMap.find(p=>p[1].player.userKey===e.entity.player.userKey);n?(n[0]=i.deviceId,n[1]=e.entity):this.entityMap.push([i.deviceId,e.entity]),(0,m.isRemoteValueEvent)(i.name)||this.emit("__remote_every__",i),this.emit(i.name,i)})}onPlayerLeave(t){this.entityMap=this.entityMap.filter(e=>e[1].player.userKey!==t.entity.player.userKey)}onEvery(t){this.on("__remote_every__",t)}waitForRegister(t){return new Promise(e=>{if(this.entityMap.some(([i,n])=>n.player.userKey===t.player.userKey)){e();return}this.once("__remote_every__",()=>{e()})})}getEntity(t){var e;return(e=this.entityMap.find(i=>i[0]===t))==null?void 0:e[1]}getIdByEntity(t){var e;return(e=this.entityMap.find(i=>i[1].player.userKey===t.player.userKey))==null?void 0:e[0]}remoteTo({target:t,...e}){return{targetDeviceId:this.getIdByEntity(t),...e}}}0&&(module.exports={ServerSideRemoteChannelEventManager});
105
2
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/adaptors/dao3/server.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AAarE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,OAAO,mCAEX,SAAQ,YAER;IAGA,YAAY,aAA+B;QACzC,KAAK,EAAE,CAAA;QAHT;;;;mBAA2B,EAAE;WAAA;QAI3B,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE;YAChC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;YAClB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,OAAM;YACR,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAClC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAC7D,CAAA;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAA;gBAC3B,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAA;YACxB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;YAChD,CAAC;YACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAA;YACrC,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC5B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,aAAa,CAAC,CAAgB;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CACpC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAC7D,CAAA;IACH,CAAC;IAED,OAAO,CAAC,EAAsC;QAC5C,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAA;IACjC,CAAC;IAED,eAAe,CAAC,MAAS;QACvB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnC,IACE,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,CACzD,EACD,CAAC;gBACD,OAAO,EAAE,CAAA;gBACT,OAAM;YACR,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE;gBACjC,OAAO,EAAE,CAAA;YACX,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,SAAS,CAAC,QAAgB;;QACxB,OAAO,MAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,0CAAG,CAAC,CAAC,CAAA;IACjE,CAAC;IAED,aAAa,CAAC,MAAS;;QACrB,OAAO,MAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CACxB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,CAC3D,0CAAG,CAAC,CAAC,CAAA;IACR,CAAC;IASD,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAqC;QAC7D,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;YAC1C,GAAG,IAAI;SACR,CAAA;IACH,CAAC;CACF"}
1
+ {"version":3,"sources":["../../../src/adaptors/dao3/server.ts"],"sourcesContent":["import EventEmitter from 'eventemitter3'\r\nimport { isRemoteAdaptorData } from '../../remote'\r\nimport { isRemoteValueEvent } from '../../remoteValue/exposeToRemote'\r\nimport { type AdaptorPackageData } from '../../adaptor'\r\n\r\ninterface GamePlayerEntityLike {\r\n player: {\r\n userKey: string\r\n }\r\n}\r\n\r\ninterface RemoteChannel<T extends GamePlayerEntityLike> {\r\n onServerEvent(fn: (e: { args: unknown; entity: T }) => void): void\r\n}\r\n\r\n/**\r\n * 这是 [dao3 游戏](https://dao3.fun/) 代码服务端适配器。\r\n * ```ts\r\n * const remoteManager = new ServerSideRemoteChannelEventManager(remoteChannel)\r\n *\r\n * world.onPlayerLeave(\r\n * remoteManager.onPlayerLeave.bind(remoteManager)\r\n * )\r\n *\r\n * export const remoteAdaptor = {\r\n * every: remoteManager.onEvery.bind(remoteManager),\r\n * off: remoteManager.off.bind(remoteManager),\r\n * on: remoteManager.on.bind(remoteManager),\r\n * once: remoteManager.once.bind(remoteManager),\r\n * emit: (e) => {\r\n * const entity = remoteManager.getEntity(e.targetDeviceId)\r\n * if (!entity) {\r\n * console.error('entity not found')\r\n * return\r\n * }\r\n * remoteChannel.sendClientEvent(entity, e as unknown as JSONValue)\r\n * },\r\n * } satisfies Adaptor\r\n *\r\n * export const remote = new Remote<RemoteFuncsFromServer, RemoteFuncsFromClient>(\r\n * remoteAdaptor,\r\n * {\r\n * deviceId: 'server',\r\n * }\r\n * )\r\n *\r\n * remote.register('initConnection', async () => {\r\n * // 什么也不干,单纯的让客户端在服务端“备案”\r\n * })\r\n *\r\n * export const getEntity = remoteManager.getEntity.bind(remoteManager)\r\n * export const getIdByEntity = remoteManager.getIdByEntity.bind(remoteManager)\r\n * export const waitForRegister = remoteManager.waitForRegister.bind(remoteManager)\r\n * export const remoteTo = remoteManager.remoteTo.bind(remoteManager)\r\n * ```\r\n */\r\nexport class ServerSideRemoteChannelEventManager<\r\n T extends GamePlayerEntityLike,\r\n> extends EventEmitter<{\r\n [key: string]: [AdaptorPackageData]\r\n}> {\r\n entityMap: [string, T][] = []\r\n\r\n constructor(remoteChannel: RemoteChannel<T>) {\r\n super()\r\n remoteChannel.onServerEvent((e) => {\r\n const { args } = e\r\n if (!isRemoteAdaptorData(args)) {\r\n return\r\n }\r\n const prevItem = this.entityMap.find(\r\n (item) => item[1].player.userKey === e.entity.player.userKey\r\n )\r\n if (prevItem) {\r\n prevItem[0] = args.deviceId\r\n prevItem[1] = e.entity\r\n } else {\r\n this.entityMap.push([args.deviceId, e.entity])\r\n }\r\n if (!isRemoteValueEvent(args.name)) {\r\n this.emit('__remote_every__', args)\r\n }\r\n this.emit(args.name, args)\r\n })\r\n }\r\n\r\n onPlayerLeave(e: { entity: T }) {\r\n this.entityMap = this.entityMap.filter(\r\n (item) => item[1].player.userKey !== e.entity.player.userKey\r\n )\r\n }\r\n\r\n onEvery(fn: (args: AdaptorPackageData) => void): void {\r\n this.on('__remote_every__', fn)\r\n }\r\n\r\n waitForRegister(entity: T) {\r\n return new Promise<void>((resolve) => {\r\n if (\r\n this.entityMap.some(\r\n ([_, en]) => en.player.userKey === entity.player.userKey\r\n )\r\n ) {\r\n resolve()\r\n return\r\n }\r\n this.once('__remote_every__', () => {\r\n resolve()\r\n })\r\n })\r\n }\r\n\r\n getEntity(deviceId: string): T | undefined {\r\n return this.entityMap.find((item) => item[0] === deviceId)?.[1]\r\n }\r\n\r\n getIdByEntity(entity: T): string | undefined {\r\n return this.entityMap.find(\r\n (item) => item[1].player.userKey === entity.player.userKey\r\n )?.[0]\r\n }\r\n\r\n remoteTo(config: { target: T }): {\r\n targetDeviceId: string\r\n }\r\n remoteTo(config: { target: T; timeoutMs: number }): {\r\n targetDeviceId: string\r\n timeoutMs: number\r\n }\r\n remoteTo({ target, ...rest }: { target: T; timeoutMs?: number }) {\r\n return {\r\n targetDeviceId: this.getIdByEntity(target),\r\n ...rest,\r\n }\r\n }\r\n}\r\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAyB,4BACzBC,EAAoC,wBACpCC,EAAmC,4CAsD5B,MAAMJ,UAEH,EAAAK,OAEP,CACD,UAA2B,CAAC,EAE5B,YAAYC,EAAiC,CAC3C,MAAM,EACNA,EAAc,cAAe,GAAM,CACjC,KAAM,CAAE,KAAAC,CAAK,EAAI,EACjB,GAAI,IAAC,uBAAoBA,CAAI,EAC3B,OAEF,MAAMC,EAAW,KAAK,UAAU,KAC7BC,GAASA,EAAK,CAAC,EAAE,OAAO,UAAY,EAAE,OAAO,OAAO,OACvD,EACID,GACFA,EAAS,CAAC,EAAID,EAAK,SACnBC,EAAS,CAAC,EAAI,EAAE,QAEhB,KAAK,UAAU,KAAK,CAACD,EAAK,SAAU,EAAE,MAAM,CAAC,KAE1C,sBAAmBA,EAAK,IAAI,GAC/B,KAAK,KAAK,mBAAoBA,CAAI,EAEpC,KAAK,KAAKA,EAAK,KAAMA,CAAI,CAC3B,CAAC,CACH,CAEA,cAAcG,EAAkB,CAC9B,KAAK,UAAY,KAAK,UAAU,OAC7BD,GAASA,EAAK,CAAC,EAAE,OAAO,UAAYC,EAAE,OAAO,OAAO,OACvD,CACF,CAEA,QAAQC,EAA8C,CACpD,KAAK,GAAG,mBAAoBA,CAAE,CAChC,CAEA,gBAAgBC,EAAW,CACzB,OAAO,IAAI,QAAeC,GAAY,CACpC,GACE,KAAK,UAAU,KACb,CAAC,CAACC,EAAGC,CAAE,IAAMA,EAAG,OAAO,UAAYH,EAAO,OAAO,OACnD,EACA,CACAC,EAAQ,EACR,MACF,CACA,KAAK,KAAK,mBAAoB,IAAM,CAClCA,EAAQ,CACV,CAAC,CACH,CAAC,CACH,CAEA,UAAUG,EAAiC,CAhH7C,IAAAC,EAiHI,OAAOA,EAAA,KAAK,UAAU,KAAMR,GAASA,EAAK,CAAC,IAAMO,CAAQ,IAAlD,YAAAC,EAAsD,EAC/D,CAEA,cAAcL,EAA+B,CApH/C,IAAAK,EAqHI,OAAOA,EAAA,KAAK,UAAU,KACnBR,GAASA,EAAK,CAAC,EAAE,OAAO,UAAYG,EAAO,OAAO,OACrD,IAFO,YAAAK,EAEH,EACN,CASA,SAAS,CAAE,OAAAC,EAAQ,GAAGC,CAAK,EAAsC,CAC/D,MAAO,CACL,eAAgB,KAAK,cAAcD,CAAM,EACzC,GAAGC,CACL,CACF,CACF","names":["server_exports","__export","ServerSideRemoteChannelEventManager","__toCommonJS","import_eventemitter3","import_remote","import_exposeToRemote","EventEmitter","remoteChannel","args","prevItem","item","e","fn","entity","resolve","_","en","deviceId","_a","target","rest"]}
@@ -0,0 +1,2 @@
1
+ import a from"eventemitter3";import{isRemoteAdaptorData as o}from"../../remote";import{isRemoteValueEvent as y}from"../../remoteValue/exposeToRemote";class g extends a{entityMap=[];constructor(t){super(),t.onServerEvent(e=>{const{args:r}=e;if(!o(r))return;const i=this.entityMap.find(n=>n[1].player.userKey===e.entity.player.userKey);i?(i[0]=r.deviceId,i[1]=e.entity):this.entityMap.push([r.deviceId,e.entity]),y(r.name)||this.emit("__remote_every__",r),this.emit(r.name,r)})}onPlayerLeave(t){this.entityMap=this.entityMap.filter(e=>e[1].player.userKey!==t.entity.player.userKey)}onEvery(t){this.on("__remote_every__",t)}waitForRegister(t){return new Promise(e=>{if(this.entityMap.some(([r,i])=>i.player.userKey===t.player.userKey)){e();return}this.once("__remote_every__",()=>{e()})})}getEntity(t){var e;return(e=this.entityMap.find(r=>r[0]===t))==null?void 0:e[1]}getIdByEntity(t){var e;return(e=this.entityMap.find(r=>r[1].player.userKey===t.player.userKey))==null?void 0:e[0]}remoteTo({target:t,...e}){return{targetDeviceId:this.getIdByEntity(t),...e}}}export{g as ServerSideRemoteChannelEventManager};
2
+ //# sourceMappingURL=server.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/adaptors/dao3/server.ts"],"sourcesContent":["import EventEmitter from 'eventemitter3'\r\nimport { isRemoteAdaptorData } from '../../remote'\r\nimport { isRemoteValueEvent } from '../../remoteValue/exposeToRemote'\r\nimport { type AdaptorPackageData } from '../../adaptor'\r\n\r\ninterface GamePlayerEntityLike {\r\n player: {\r\n userKey: string\r\n }\r\n}\r\n\r\ninterface RemoteChannel<T extends GamePlayerEntityLike> {\r\n onServerEvent(fn: (e: { args: unknown; entity: T }) => void): void\r\n}\r\n\r\n/**\r\n * 这是 [dao3 游戏](https://dao3.fun/) 代码服务端适配器。\r\n * ```ts\r\n * const remoteManager = new ServerSideRemoteChannelEventManager(remoteChannel)\r\n *\r\n * world.onPlayerLeave(\r\n * remoteManager.onPlayerLeave.bind(remoteManager)\r\n * )\r\n *\r\n * export const remoteAdaptor = {\r\n * every: remoteManager.onEvery.bind(remoteManager),\r\n * off: remoteManager.off.bind(remoteManager),\r\n * on: remoteManager.on.bind(remoteManager),\r\n * once: remoteManager.once.bind(remoteManager),\r\n * emit: (e) => {\r\n * const entity = remoteManager.getEntity(e.targetDeviceId)\r\n * if (!entity) {\r\n * console.error('entity not found')\r\n * return\r\n * }\r\n * remoteChannel.sendClientEvent(entity, e as unknown as JSONValue)\r\n * },\r\n * } satisfies Adaptor\r\n *\r\n * export const remote = new Remote<RemoteFuncsFromServer, RemoteFuncsFromClient>(\r\n * remoteAdaptor,\r\n * {\r\n * deviceId: 'server',\r\n * }\r\n * )\r\n *\r\n * remote.register('initConnection', async () => {\r\n * // 什么也不干,单纯的让客户端在服务端“备案”\r\n * })\r\n *\r\n * export const getEntity = remoteManager.getEntity.bind(remoteManager)\r\n * export const getIdByEntity = remoteManager.getIdByEntity.bind(remoteManager)\r\n * export const waitForRegister = remoteManager.waitForRegister.bind(remoteManager)\r\n * export const remoteTo = remoteManager.remoteTo.bind(remoteManager)\r\n * ```\r\n */\r\nexport class ServerSideRemoteChannelEventManager<\r\n T extends GamePlayerEntityLike,\r\n> extends EventEmitter<{\r\n [key: string]: [AdaptorPackageData]\r\n}> {\r\n entityMap: [string, T][] = []\r\n\r\n constructor(remoteChannel: RemoteChannel<T>) {\r\n super()\r\n remoteChannel.onServerEvent((e) => {\r\n const { args } = e\r\n if (!isRemoteAdaptorData(args)) {\r\n return\r\n }\r\n const prevItem = this.entityMap.find(\r\n (item) => item[1].player.userKey === e.entity.player.userKey\r\n )\r\n if (prevItem) {\r\n prevItem[0] = args.deviceId\r\n prevItem[1] = e.entity\r\n } else {\r\n this.entityMap.push([args.deviceId, e.entity])\r\n }\r\n if (!isRemoteValueEvent(args.name)) {\r\n this.emit('__remote_every__', args)\r\n }\r\n this.emit(args.name, args)\r\n })\r\n }\r\n\r\n onPlayerLeave(e: { entity: T }) {\r\n this.entityMap = this.entityMap.filter(\r\n (item) => item[1].player.userKey !== e.entity.player.userKey\r\n )\r\n }\r\n\r\n onEvery(fn: (args: AdaptorPackageData) => void): void {\r\n this.on('__remote_every__', fn)\r\n }\r\n\r\n waitForRegister(entity: T) {\r\n return new Promise<void>((resolve) => {\r\n if (\r\n this.entityMap.some(\r\n ([_, en]) => en.player.userKey === entity.player.userKey\r\n )\r\n ) {\r\n resolve()\r\n return\r\n }\r\n this.once('__remote_every__', () => {\r\n resolve()\r\n })\r\n })\r\n }\r\n\r\n getEntity(deviceId: string): T | undefined {\r\n return this.entityMap.find((item) => item[0] === deviceId)?.[1]\r\n }\r\n\r\n getIdByEntity(entity: T): string | undefined {\r\n return this.entityMap.find(\r\n (item) => item[1].player.userKey === entity.player.userKey\r\n )?.[0]\r\n }\r\n\r\n remoteTo(config: { target: T }): {\r\n targetDeviceId: string\r\n }\r\n remoteTo(config: { target: T; timeoutMs: number }): {\r\n targetDeviceId: string\r\n timeoutMs: number\r\n }\r\n remoteTo({ target, ...rest }: { target: T; timeoutMs?: number }) {\r\n return {\r\n targetDeviceId: this.getIdByEntity(target),\r\n ...rest,\r\n }\r\n }\r\n}\r\n"],"mappings":"AAAA,OAAOA,MAAkB,gBACzB,OAAS,uBAAAC,MAA2B,eACpC,OAAS,sBAAAC,MAA0B,mCAsD5B,MAAMC,UAEHH,CAEP,CACD,UAA2B,CAAC,EAE5B,YAAYI,EAAiC,CAC3C,MAAM,EACNA,EAAc,cAAe,GAAM,CACjC,KAAM,CAAE,KAAAC,CAAK,EAAI,EACjB,GAAI,CAACJ,EAAoBI,CAAI,EAC3B,OAEF,MAAMC,EAAW,KAAK,UAAU,KAC7BC,GAASA,EAAK,CAAC,EAAE,OAAO,UAAY,EAAE,OAAO,OAAO,OACvD,EACID,GACFA,EAAS,CAAC,EAAID,EAAK,SACnBC,EAAS,CAAC,EAAI,EAAE,QAEhB,KAAK,UAAU,KAAK,CAACD,EAAK,SAAU,EAAE,MAAM,CAAC,EAE1CH,EAAmBG,EAAK,IAAI,GAC/B,KAAK,KAAK,mBAAoBA,CAAI,EAEpC,KAAK,KAAKA,EAAK,KAAMA,CAAI,CAC3B,CAAC,CACH,CAEA,cAAcG,EAAkB,CAC9B,KAAK,UAAY,KAAK,UAAU,OAC7BD,GAASA,EAAK,CAAC,EAAE,OAAO,UAAYC,EAAE,OAAO,OAAO,OACvD,CACF,CAEA,QAAQC,EAA8C,CACpD,KAAK,GAAG,mBAAoBA,CAAE,CAChC,CAEA,gBAAgBC,EAAW,CACzB,OAAO,IAAI,QAAeC,GAAY,CACpC,GACE,KAAK,UAAU,KACb,CAAC,CAACC,EAAGC,CAAE,IAAMA,EAAG,OAAO,UAAYH,EAAO,OAAO,OACnD,EACA,CACAC,EAAQ,EACR,MACF,CACA,KAAK,KAAK,mBAAoB,IAAM,CAClCA,EAAQ,CACV,CAAC,CACH,CAAC,CACH,CAEA,UAAUG,EAAiC,CAhH7C,IAAAC,EAiHI,OAAOA,EAAA,KAAK,UAAU,KAAMR,GAASA,EAAK,CAAC,IAAMO,CAAQ,IAAlD,YAAAC,EAAsD,EAC/D,CAEA,cAAcL,EAA+B,CApH/C,IAAAK,EAqHI,OAAOA,EAAA,KAAK,UAAU,KACnBR,GAASA,EAAK,CAAC,EAAE,OAAO,UAAYG,EAAO,OAAO,OACrD,IAFO,YAAAK,EAEH,EACN,CASA,SAAS,CAAE,OAAAC,EAAQ,GAAGC,CAAK,EAAsC,CAC/D,MAAO,CACL,eAAgB,KAAK,cAAcD,CAAM,EACzC,GAAGC,CACL,CACF,CACF","names":["EventEmitter","isRemoteAdaptorData","isRemoteValueEvent","ServerSideRemoteChannelEventManager","remoteChannel","args","prevItem","item","e","fn","entity","resolve","_","en","deviceId","_a","target","rest"]}
@@ -0,0 +1,5 @@
1
+ declare const MESSENGER_EVENT_NAME = "__remote-messenger-event__";
2
+ declare const MESSENGER_KEY = "__remote_messenger__";
3
+ declare const KEYOF_GET_ID = "__get-webcontents-id__";
4
+
5
+ export { KEYOF_GET_ID, MESSENGER_EVENT_NAME, MESSENGER_KEY };
@@ -0,0 +1,5 @@
1
+ declare const MESSENGER_EVENT_NAME = "__remote-messenger-event__";
2
+ declare const MESSENGER_KEY = "__remote_messenger__";
3
+ declare const KEYOF_GET_ID = "__get-webcontents-id__";
4
+
5
+ export { KEYOF_GET_ID, MESSENGER_EVENT_NAME, MESSENGER_KEY };
@@ -0,0 +1,2 @@
1
+ "use strict";var o=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var m=(_,e)=>{for(var E in e)o(_,E,{get:e[E],enumerable:!0})},N=(_,e,E,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of r(e))!c.call(_,t)&&t!==E&&o(_,t,{get:()=>e[t],enumerable:!(n=s(e,t))||n.enumerable});return _};var S=_=>N(o({},"__esModule",{value:!0}),_);var G={};m(G,{KEYOF_GET_ID:()=>x,MESSENGER_EVENT_NAME:()=>g,MESSENGER_KEY:()=>p});module.exports=S(G);const g="__remote-messenger-event__",p="__remote_messenger__",x="__get-webcontents-id__";0&&(module.exports={KEYOF_GET_ID,MESSENGER_EVENT_NAME,MESSENGER_KEY});
2
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/adaptors/electron/constants.ts"],"sourcesContent":["export const MESSENGER_EVENT_NAME = '__remote-messenger-event__'\r\nexport const MESSENGER_KEY = '__remote_messenger__'\r\nexport const KEYOF_GET_ID = '__get-webcontents-id__'\r\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,EAAA,yBAAAC,EAAA,kBAAAC,IAAA,eAAAC,EAAAL,GAAO,MAAMG,EAAuB,6BACvBC,EAAgB,uBAChBF,EAAe","names":["constants_exports","__export","KEYOF_GET_ID","MESSENGER_EVENT_NAME","MESSENGER_KEY","__toCommonJS"]}
@@ -0,0 +1,2 @@
1
+ const e="__remote-messenger-event__",_="__remote_messenger__",t="__get-webcontents-id__";export{t as KEYOF_GET_ID,e as MESSENGER_EVENT_NAME,_ as MESSENGER_KEY};
2
+ //# sourceMappingURL=constants.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/adaptors/electron/constants.ts"],"sourcesContent":["export const MESSENGER_EVENT_NAME = '__remote-messenger-event__'\r\nexport const MESSENGER_KEY = '__remote_messenger__'\r\nexport const KEYOF_GET_ID = '__get-webcontents-id__'\r\n"],"mappings":"AAAO,MAAMA,EAAuB,6BACvBC,EAAgB,uBAChBC,EAAe","names":["MESSENGER_EVENT_NAME","MESSENGER_KEY","KEYOF_GET_ID"]}
@@ -0,0 +1,10 @@
1
+ import { AdaptorPackageData, Adaptor } from '../../adaptor.mjs';
2
+
3
+ declare function onElectronMainEmit(data: AdaptorPackageData): void;
4
+ interface Options {
5
+ onEmit?: (data: AdaptorPackageData) => void;
6
+ }
7
+ declare function createElectronMainAdaptor(options?: Options): Adaptor;
8
+ declare function initMessengerInMain(): void;
9
+
10
+ export { createElectronMainAdaptor, initMessengerInMain, onElectronMainEmit };
@@ -0,0 +1,10 @@
1
+ import { AdaptorPackageData, Adaptor } from '../../adaptor.js';
2
+
3
+ declare function onElectronMainEmit(data: AdaptorPackageData): void;
4
+ interface Options {
5
+ onEmit?: (data: AdaptorPackageData) => void;
6
+ }
7
+ declare function createElectronMainAdaptor(options?: Options): Adaptor;
8
+ declare function initMessengerInMain(): void;
9
+
10
+ export { createElectronMainAdaptor, initMessengerInMain, onElectronMainEmit };
@@ -0,0 +1,2 @@
1
+ "use strict";var p=Object.create;var E=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var A=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var M=(e,n)=>{for(var t in n)E(e,t,{get:n[t],enumerable:!0})},d=(e,n,t,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of f(n))!g.call(e,r)&&r!==t&&E(e,r,{get:()=>n[r],enumerable:!(o=_(n,r))||o.enumerable});return e};var l=(e,n,t)=>(t=e!=null?p(A(e)):{},d(n||!e||!e.__esModule?E(t,"default",{value:e,enumerable:!0}):t,e)),v=e=>d(E({},"__esModule",{value:!0}),e);var V={};M(V,{createElectronMainAdaptor:()=>D,initMessengerInMain:()=>w,onElectronMainEmit:()=>m});module.exports=v(V);var s=l(require("eventemitter3")),a=require("electron"),c=require("../../remote"),i=require("./constants");class N extends s.default{EVERY_EVENT_NAME="__remote_every__";constructor(){super(),a.ipcMain.on(i.MESSENGER_EVENT_NAME,(n,t)=>{(0,c.isRemoteAdaptorData)(t)&&(this.emit(t.name,t),this.emit(this.EVERY_EVENT_NAME,t))})}onEvery(n){this.on(this.EVERY_EVENT_NAME,n)}}function m(e){const t=a.BrowserWindow.getAllWindows().find(o=>o.webContents.id.toString()===e.targetDeviceId);t==null||t.webContents.send(i.MESSENGER_EVENT_NAME,e)}function D(e){const n=(e==null?void 0:e.onEmit)??m,t=new N;return{every:t.onEvery.bind(t),on:t.on.bind(t),once:t.once.bind(t),off:t.off.bind(t),emit:n}}function w(){a.ipcMain.handle(i.KEYOF_GET_ID,e=>e.sender.id.toString())}0&&(module.exports={createElectronMainAdaptor,initMessengerInMain,onElectronMainEmit});
2
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/adaptors/electron/main.ts"],"sourcesContent":["import EventEmitter from 'eventemitter3'\r\n\r\nimport { BrowserWindow, ipcMain } from 'electron'\r\nimport { Adaptor, AdaptorPackageData } from '../../adaptor'\r\nimport { isRemoteAdaptorData } from '../../remote'\r\nimport { KEYOF_GET_ID, MESSENGER_EVENT_NAME } from './constants'\r\n\r\nclass RemoteEventManager extends EventEmitter<{\r\n [key: string]: [AdaptorPackageData]\r\n}> {\r\n EVERY_EVENT_NAME = '__remote_every__'\r\n\r\n constructor() {\r\n super()\r\n ipcMain.on(MESSENGER_EVENT_NAME, (_, data) => {\r\n if (isRemoteAdaptorData(data)) {\r\n this.emit(data.name, data)\r\n // 一定要抛出 every 事件,remote 包基于此处理远端的响应\r\n this.emit(this.EVERY_EVENT_NAME, data)\r\n }\r\n })\r\n }\r\n\r\n onEvery(fn: (data: AdaptorPackageData) => void) {\r\n this.on(this.EVERY_EVENT_NAME, fn)\r\n }\r\n}\r\n\r\nexport function onElectronMainEmit(data: AdaptorPackageData) {\r\n // 主进程通过 webContents 发送消息到渲染进程\r\n const allWindows = BrowserWindow.getAllWindows()\r\n const win = allWindows.find(\r\n (w) => w.webContents.id.toString() === data.targetDeviceId\r\n )\r\n win?.webContents.send(MESSENGER_EVENT_NAME, data)\r\n}\r\n\r\ninterface Options {\r\n onEmit?: (data: AdaptorPackageData) => void\r\n}\r\n\r\nexport function createElectronMainAdaptor(options?: Options) {\r\n const onEmit = options?.onEmit ?? onElectronMainEmit\r\n const remoteEventManager = new RemoteEventManager()\r\n\r\n const adaptor: Adaptor = {\r\n every: remoteEventManager.onEvery.bind(remoteEventManager),\r\n on: remoteEventManager.on.bind(remoteEventManager),\r\n once: remoteEventManager.once.bind(remoteEventManager),\r\n off: remoteEventManager.off.bind(remoteEventManager),\r\n emit: onEmit,\r\n }\r\n\r\n return adaptor\r\n}\r\n\r\nexport function initMessengerInMain() {\r\n ipcMain.handle(KEYOF_GET_ID, (event) => event.sender.id.toString())\r\n}\r\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,+BAAAE,EAAA,wBAAAC,EAAA,uBAAAC,IAAA,eAAAC,EAAAL,GAAA,IAAAM,EAAyB,4BAEzBC,EAAuC,oBAEvCC,EAAoC,wBACpCC,EAAmD,uBAEnD,MAAMC,UAA2B,EAAAC,OAE9B,CACD,iBAAmB,mBAEnB,aAAc,CACZ,MAAM,EACN,UAAQ,GAAG,uBAAsB,CAACC,EAAGC,IAAS,IACxC,uBAAoBA,CAAI,IAC1B,KAAK,KAAKA,EAAK,KAAMA,CAAI,EAEzB,KAAK,KAAK,KAAK,iBAAkBA,CAAI,EAEzC,CAAC,CACH,CAEA,QAAQC,EAAwC,CAC9C,KAAK,GAAG,KAAK,iBAAkBA,CAAE,CACnC,CACF,CAEO,SAASV,EAAmBS,EAA0B,CAG3D,MAAME,EADa,gBAAc,cAAc,EACxB,KACpBC,GAAMA,EAAE,YAAY,GAAG,SAAS,IAAMH,EAAK,cAC9C,EACAE,GAAA,MAAAA,EAAK,YAAY,KAAK,uBAAsBF,EAC9C,CAMO,SAASX,EAA0Be,EAAmB,CAC3D,MAAMC,GAASD,GAAA,YAAAA,EAAS,SAAUb,EAC5Be,EAAqB,IAAIT,EAU/B,MARyB,CACvB,MAAOS,EAAmB,QAAQ,KAAKA,CAAkB,EACzD,GAAIA,EAAmB,GAAG,KAAKA,CAAkB,EACjD,KAAMA,EAAmB,KAAK,KAAKA,CAAkB,EACrD,IAAKA,EAAmB,IAAI,KAAKA,CAAkB,EACnD,KAAMD,CACR,CAGF,CAEO,SAASf,GAAsB,CACpC,UAAQ,OAAO,eAAeiB,GAAUA,EAAM,OAAO,GAAG,SAAS,CAAC,CACpE","names":["main_exports","__export","createElectronMainAdaptor","initMessengerInMain","onElectronMainEmit","__toCommonJS","import_eventemitter3","import_electron","import_remote","import_constants","RemoteEventManager","EventEmitter","_","data","fn","win","w","options","onEmit","remoteEventManager","event"]}
@@ -0,0 +1,2 @@
1
+ import i from"eventemitter3";import{BrowserWindow as E,ipcMain as r}from"electron";import{isRemoteAdaptorData as d}from"../../remote";import{KEYOF_GET_ID as s,MESSENGER_EVENT_NAME as a}from"./constants";class c extends i{EVERY_EVENT_NAME="__remote_every__";constructor(){super(),r.on(a,(n,t)=>{d(t)&&(this.emit(t.name,t),this.emit(this.EVERY_EVENT_NAME,t))})}onEvery(n){this.on(this.EVERY_EVENT_NAME,n)}}function m(e){const t=E.getAllWindows().find(o=>o.webContents.id.toString()===e.targetDeviceId);t==null||t.webContents.send(a,e)}function v(e){const n=(e==null?void 0:e.onEmit)??m,t=new c;return{every:t.onEvery.bind(t),on:t.on.bind(t),once:t.once.bind(t),off:t.off.bind(t),emit:n}}function N(){r.handle(s,e=>e.sender.id.toString())}export{v as createElectronMainAdaptor,N as initMessengerInMain,m as onElectronMainEmit};
2
+ //# sourceMappingURL=main.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/adaptors/electron/main.ts"],"sourcesContent":["import EventEmitter from 'eventemitter3'\r\n\r\nimport { BrowserWindow, ipcMain } from 'electron'\r\nimport { Adaptor, AdaptorPackageData } from '../../adaptor'\r\nimport { isRemoteAdaptorData } from '../../remote'\r\nimport { KEYOF_GET_ID, MESSENGER_EVENT_NAME } from './constants'\r\n\r\nclass RemoteEventManager extends EventEmitter<{\r\n [key: string]: [AdaptorPackageData]\r\n}> {\r\n EVERY_EVENT_NAME = '__remote_every__'\r\n\r\n constructor() {\r\n super()\r\n ipcMain.on(MESSENGER_EVENT_NAME, (_, data) => {\r\n if (isRemoteAdaptorData(data)) {\r\n this.emit(data.name, data)\r\n // 一定要抛出 every 事件,remote 包基于此处理远端的响应\r\n this.emit(this.EVERY_EVENT_NAME, data)\r\n }\r\n })\r\n }\r\n\r\n onEvery(fn: (data: AdaptorPackageData) => void) {\r\n this.on(this.EVERY_EVENT_NAME, fn)\r\n }\r\n}\r\n\r\nexport function onElectronMainEmit(data: AdaptorPackageData) {\r\n // 主进程通过 webContents 发送消息到渲染进程\r\n const allWindows = BrowserWindow.getAllWindows()\r\n const win = allWindows.find(\r\n (w) => w.webContents.id.toString() === data.targetDeviceId\r\n )\r\n win?.webContents.send(MESSENGER_EVENT_NAME, data)\r\n}\r\n\r\ninterface Options {\r\n onEmit?: (data: AdaptorPackageData) => void\r\n}\r\n\r\nexport function createElectronMainAdaptor(options?: Options) {\r\n const onEmit = options?.onEmit ?? onElectronMainEmit\r\n const remoteEventManager = new RemoteEventManager()\r\n\r\n const adaptor: Adaptor = {\r\n every: remoteEventManager.onEvery.bind(remoteEventManager),\r\n on: remoteEventManager.on.bind(remoteEventManager),\r\n once: remoteEventManager.once.bind(remoteEventManager),\r\n off: remoteEventManager.off.bind(remoteEventManager),\r\n emit: onEmit,\r\n }\r\n\r\n return adaptor\r\n}\r\n\r\nexport function initMessengerInMain() {\r\n ipcMain.handle(KEYOF_GET_ID, (event) => event.sender.id.toString())\r\n}\r\n"],"mappings":"AAAA,OAAOA,MAAkB,gBAEzB,OAAS,iBAAAC,EAAe,WAAAC,MAAe,WAEvC,OAAS,uBAAAC,MAA2B,eACpC,OAAS,gBAAAC,EAAc,wBAAAC,MAA4B,cAEnD,MAAMC,UAA2BN,CAE9B,CACD,iBAAmB,mBAEnB,aAAc,CACZ,MAAM,EACNE,EAAQ,GAAGG,EAAsB,CAACE,EAAGC,IAAS,CACxCL,EAAoBK,CAAI,IAC1B,KAAK,KAAKA,EAAK,KAAMA,CAAI,EAEzB,KAAK,KAAK,KAAK,iBAAkBA,CAAI,EAEzC,CAAC,CACH,CAEA,QAAQC,EAAwC,CAC9C,KAAK,GAAG,KAAK,iBAAkBA,CAAE,CACnC,CACF,CAEO,SAASC,EAAmBF,EAA0B,CAG3D,MAAMG,EADaV,EAAc,cAAc,EACxB,KACpBW,GAAMA,EAAE,YAAY,GAAG,SAAS,IAAMJ,EAAK,cAC9C,EACAG,GAAA,MAAAA,EAAK,YAAY,KAAKN,EAAsBG,EAC9C,CAMO,SAASK,EAA0BC,EAAmB,CAC3D,MAAMC,GAASD,GAAA,YAAAA,EAAS,SAAUJ,EAC5BM,EAAqB,IAAIV,EAU/B,MARyB,CACvB,MAAOU,EAAmB,QAAQ,KAAKA,CAAkB,EACzD,GAAIA,EAAmB,GAAG,KAAKA,CAAkB,EACjD,KAAMA,EAAmB,KAAK,KAAKA,CAAkB,EACrD,IAAKA,EAAmB,IAAI,KAAKA,CAAkB,EACnD,KAAMD,CACR,CAGF,CAEO,SAASE,GAAsB,CACpCf,EAAQ,OAAOE,EAAec,GAAUA,EAAM,OAAO,GAAG,SAAS,CAAC,CACpE","names":["EventEmitter","BrowserWindow","ipcMain","isRemoteAdaptorData","KEYOF_GET_ID","MESSENGER_EVENT_NAME","RemoteEventManager","_","data","fn","onElectronMainEmit","win","w","createElectronMainAdaptor","options","onEmit","remoteEventManager","initMessengerInMain","event"]}
@@ -0,0 +1,8 @@
1
+ interface Messenger {
2
+ postMessage: (data: any) => void;
3
+ getId: () => Promise<string>;
4
+ on: (channel: string, listener: (...args: any[]) => void) => void;
5
+ }
6
+ declare function getMessenger(): Messenger;
7
+
8
+ export { getMessenger };
@@ -0,0 +1,8 @@
1
+ interface Messenger {
2
+ postMessage: (data: any) => void;
3
+ getId: () => Promise<string>;
4
+ on: (channel: string, listener: (...args: any[]) => void) => void;
5
+ }
6
+ declare function getMessenger(): Messenger;
7
+
8
+ export { getMessenger };
@@ -0,0 +1,2 @@
1
+ "use strict";var o=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var M=(n,e)=>{for(var r in e)o(n,r,{get:e[r],enumerable:!0})},f=(n,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of g(e))!d.call(n,s)&&s!==r&&o(n,s,{get:()=>e[s],enumerable:!(i=a(e,s))||i.enumerable});return n};var E=n=>f(o({},"__esModule",{value:!0}),n);var m={};M(m,{getMessenger:()=>c});module.exports=E(m);var t=require("./constants");function c(){return window[t.MESSENGER_KEY]}0&&(module.exports={getMessenger});
2
+ //# sourceMappingURL=messenger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/adaptors/electron/messenger.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport { MESSENGER_KEY } from './constants'\r\n\r\ninterface Messenger {\r\n postMessage: (data: any) => void\r\n getId: () => Promise<string>\r\n on: (channel: string, listener: (...args: any[]) => void) => void\r\n}\r\n\r\nexport function getMessenger() {\r\n return window[MESSENGER_KEY as keyof Window] as Messenger\r\n}\r\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,IAAA,eAAAC,EAAAH,GAEA,IAAAI,EAA8B,uBAQvB,SAASF,GAAe,CAC7B,OAAO,OAAO,eAA6B,CAC7C","names":["messenger_exports","__export","getMessenger","__toCommonJS","import_constants"]}
@@ -0,0 +1,2 @@
1
+ import{MESSENGER_KEY as e}from"./constants";function s(){return window[e]}export{s as getMessenger};
2
+ //# sourceMappingURL=messenger.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/adaptors/electron/messenger.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport { MESSENGER_KEY } from './constants'\r\n\r\ninterface Messenger {\r\n postMessage: (data: any) => void\r\n getId: () => Promise<string>\r\n on: (channel: string, listener: (...args: any[]) => void) => void\r\n}\r\n\r\nexport function getMessenger() {\r\n return window[MESSENGER_KEY as keyof Window] as Messenger\r\n}\r\n"],"mappings":"AAEA,OAAS,iBAAAA,MAAqB,cAQvB,SAASC,GAAe,CAC7B,OAAO,OAAOD,CAA6B,CAC7C","names":["MESSENGER_KEY","getMessenger"]}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 在 preload 进程中初始化 messenger 对象
3
+ */
4
+ declare function initMessengerInPreload(contextBridge: Electron.ContextBridge, ipcRenderer: Electron.IpcRenderer): void;
5
+
6
+ export { initMessengerInPreload };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 在 preload 进程中初始化 messenger 对象
3
+ */
4
+ declare function initMessengerInPreload(contextBridge: Electron.ContextBridge, ipcRenderer: Electron.IpcRenderer): void;
5
+
6
+ export { initMessengerInPreload };
@@ -0,0 +1,2 @@
1
+ "use strict";var r=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var M=Object.prototype.hasOwnProperty;var _=(n,o)=>{for(var e in o)r(n,e,{get:o[e],enumerable:!0})},I=(n,o,e,s)=>{if(o&&typeof o=="object"||typeof o=="function")for(let E of i(o))!M.call(n,E)&&E!==e&&r(n,E,{get:()=>o[E],enumerable:!(s=g(o,E))||s.enumerable});return n};var d=n=>I(r({},"__esModule",{value:!0}),n);var p={};_(p,{initMessengerInPreload:()=>l});module.exports=d(p);var t=require("./constants");function l(n,o){n.exposeInMainWorld(t.MESSENGER_KEY,{postMessage:e=>{o.postMessage(t.MESSENGER_EVENT_NAME,e)},getId:()=>o.invoke(t.KEYOF_GET_ID),on:(e,s)=>{o.on(e,(E,...a)=>s(...a))}})}0&&(module.exports={initMessengerInPreload});
2
+ //# sourceMappingURL=preload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/adaptors/electron/preload.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport { KEYOF_GET_ID, MESSENGER_EVENT_NAME, MESSENGER_KEY } from './constants'\r\n\r\n/**\r\n * 在 preload 进程中初始化 messenger 对象\r\n */\r\nexport function initMessengerInPreload(\r\n contextBridge: Electron.ContextBridge,\r\n ipcRenderer: Electron.IpcRenderer\r\n) {\r\n contextBridge.exposeInMainWorld(MESSENGER_KEY, {\r\n postMessage: (data: any) => {\r\n ipcRenderer.postMessage(MESSENGER_EVENT_NAME, data)\r\n },\r\n getId: () => ipcRenderer.invoke(KEYOF_GET_ID),\r\n on: (channel: string, listener: (...args: any[]) => void) => {\r\n ipcRenderer.on(channel, (_, ...args) => listener(...args))\r\n },\r\n })\r\n}\r\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GAEA,IAAAI,EAAkE,uBAK3D,SAASF,EACdG,EACAC,EACA,CACAD,EAAc,kBAAkB,gBAAe,CAC7C,YAAcE,GAAc,CAC1BD,EAAY,YAAY,uBAAsBC,CAAI,CACpD,EACA,MAAO,IAAMD,EAAY,OAAO,cAAY,EAC5C,GAAI,CAACE,EAAiBC,IAAuC,CAC3DH,EAAY,GAAGE,EAAS,CAACE,KAAMC,IAASF,EAAS,GAAGE,CAAI,CAAC,CAC3D,CACF,CAAC,CACH","names":["preload_exports","__export","initMessengerInPreload","__toCommonJS","import_constants","contextBridge","ipcRenderer","data","channel","listener","_","args"]}
@@ -0,0 +1,2 @@
1
+ import{KEYOF_GET_ID as s,MESSENGER_EVENT_NAME as r,MESSENGER_KEY as a}from"./constants";function M(e,o){e.exposeInMainWorld(a,{postMessage:n=>{o.postMessage(r,n)},getId:()=>o.invoke(s),on:(n,E)=>{o.on(n,(g,...t)=>E(...t))}})}export{M as initMessengerInPreload};
2
+ //# sourceMappingURL=preload.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/adaptors/electron/preload.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport { KEYOF_GET_ID, MESSENGER_EVENT_NAME, MESSENGER_KEY } from './constants'\r\n\r\n/**\r\n * 在 preload 进程中初始化 messenger 对象\r\n */\r\nexport function initMessengerInPreload(\r\n contextBridge: Electron.ContextBridge,\r\n ipcRenderer: Electron.IpcRenderer\r\n) {\r\n contextBridge.exposeInMainWorld(MESSENGER_KEY, {\r\n postMessage: (data: any) => {\r\n ipcRenderer.postMessage(MESSENGER_EVENT_NAME, data)\r\n },\r\n getId: () => ipcRenderer.invoke(KEYOF_GET_ID),\r\n on: (channel: string, listener: (...args: any[]) => void) => {\r\n ipcRenderer.on(channel, (_, ...args) => listener(...args))\r\n },\r\n })\r\n}\r\n"],"mappings":"AAEA,OAAS,gBAAAA,EAAc,wBAAAC,EAAsB,iBAAAC,MAAqB,cAK3D,SAASC,EACdC,EACAC,EACA,CACAD,EAAc,kBAAkBF,EAAe,CAC7C,YAAcI,GAAc,CAC1BD,EAAY,YAAYJ,EAAsBK,CAAI,CACpD,EACA,MAAO,IAAMD,EAAY,OAAOL,CAAY,EAC5C,GAAI,CAACO,EAAiBC,IAAuC,CAC3DH,EAAY,GAAGE,EAAS,CAACE,KAAMC,IAASF,EAAS,GAAGE,CAAI,CAAC,CAC3D,CACF,CAAC,CACH","names":["KEYOF_GET_ID","MESSENGER_EVENT_NAME","MESSENGER_KEY","initMessengerInPreload","contextBridge","ipcRenderer","data","channel","listener","_","args"]}