@event-chat/rpc 0.1.1 → 0.1.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 (92) hide show
  1. package/dist/core/RPCAction.d.ts +42 -0
  2. package/dist/core/RPCAction.d.ts.map +1 -0
  3. package/dist/core/RPCAction.js +189 -0
  4. package/dist/core/RPCDecorator.d.ts +20 -0
  5. package/dist/core/RPCDecorator.d.ts.map +1 -0
  6. package/dist/core/RPCDecorator.js +57 -0
  7. package/dist/core/registry.d.ts +41 -0
  8. package/dist/core/registry.d.ts.map +1 -0
  9. package/dist/core/registry.js +29 -0
  10. package/dist/entry/auto.d.ts +2 -0
  11. package/dist/entry/auto.d.ts.map +1 -0
  12. package/dist/entry/auto.js +56 -0
  13. package/dist/entry/broadcastChannel.d.ts +24 -0
  14. package/dist/entry/broadcastChannel.d.ts.map +1 -0
  15. package/dist/entry/broadcastChannel.js +7 -0
  16. package/dist/entry/dedicatedWorkerGlobalScope.d.ts +24 -0
  17. package/dist/entry/dedicatedWorkerGlobalScope.d.ts.map +1 -0
  18. package/dist/entry/dedicatedWorkerGlobalScope.js +7 -0
  19. package/dist/entry/serviceWorkerGlobalScope.d.ts +24 -0
  20. package/dist/entry/serviceWorkerGlobalScope.d.ts.map +1 -0
  21. package/dist/entry/serviceWorkerGlobalScope.js +7 -0
  22. package/dist/entry/serviceWorkerRegistration.d.ts +24 -0
  23. package/dist/entry/serviceWorkerRegistration.d.ts.map +1 -0
  24. package/dist/entry/serviceWorkerRegistration.js +7 -0
  25. package/dist/entry/sharedWorker.d.ts +24 -0
  26. package/dist/entry/sharedWorker.d.ts.map +1 -0
  27. package/dist/entry/sharedWorker.js +7 -0
  28. package/dist/entry/sharedWorkerGlobalScope.d.ts +24 -0
  29. package/dist/entry/sharedWorkerGlobalScope.d.ts.map +1 -0
  30. package/dist/entry/sharedWorkerGlobalScope.js +7 -0
  31. package/dist/entry/webSocket.d.ts +24 -0
  32. package/dist/entry/webSocket.d.ts.map +1 -0
  33. package/dist/entry/webSocket.js +7 -0
  34. package/dist/entry/window.d.ts +24 -0
  35. package/dist/entry/window.d.ts.map +1 -0
  36. package/dist/entry/window.js +8 -0
  37. package/dist/entry/worker.d.ts +24 -0
  38. package/dist/entry/worker.d.ts.map +1 -0
  39. package/dist/entry/worker.js +7 -0
  40. package/dist/fields.d.ts +15 -0
  41. package/dist/fields.d.ts.map +1 -1
  42. package/dist/index.d.ts +1 -1
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/react/RPCProvider.d.ts +4 -0
  45. package/dist/react/RPCProvider.d.ts.map +1 -0
  46. package/dist/react/RPCProvider.js +34 -0
  47. package/dist/react/createCtx.d.ts +13 -0
  48. package/dist/react/createCtx.d.ts.map +1 -0
  49. package/dist/react/createCtx.js +33 -0
  50. package/dist/react/fields.d.ts +30 -0
  51. package/dist/react/fields.d.ts.map +1 -0
  52. package/dist/react/fields.js +14 -0
  53. package/dist/react/hooks.d.ts +44 -0
  54. package/dist/react/hooks.d.ts.map +1 -0
  55. package/dist/react/hooks.js +87 -0
  56. package/dist/react/index.d.ts +5 -0
  57. package/dist/react/index.d.ts.map +1 -0
  58. package/dist/react/index.js +5 -0
  59. package/dist/transports/BaseTransport.d.ts +19 -0
  60. package/dist/transports/BaseTransport.d.ts.map +1 -0
  61. package/dist/transports/BaseTransport.js +22 -0
  62. package/dist/transports/BroadcastChannelTransport.d.ts +9 -0
  63. package/dist/transports/BroadcastChannelTransport.d.ts.map +1 -0
  64. package/dist/transports/BroadcastChannelTransport.js +17 -0
  65. package/dist/transports/DedicatedWorkerGlobalScopeTransport.d.ts +10 -0
  66. package/dist/transports/DedicatedWorkerGlobalScopeTransport.d.ts.map +1 -0
  67. package/dist/transports/DedicatedWorkerGlobalScopeTransport.js +18 -0
  68. package/dist/transports/ServiceWorkerGlobalScopeTransport.d.ts +11 -0
  69. package/dist/transports/ServiceWorkerGlobalScopeTransport.d.ts.map +1 -0
  70. package/dist/transports/ServiceWorkerGlobalScopeTransport.js +33 -0
  71. package/dist/transports/ServiceWorkerRegistrationTransport.d.ts +10 -0
  72. package/dist/transports/ServiceWorkerRegistrationTransport.d.ts.map +1 -0
  73. package/dist/transports/ServiceWorkerRegistrationTransport.js +18 -0
  74. package/dist/transports/SharedWorkerGlobalScopeTransport.d.ts +12 -0
  75. package/dist/transports/SharedWorkerGlobalScopeTransport.d.ts.map +1 -0
  76. package/dist/transports/SharedWorkerGlobalScopeTransport.js +36 -0
  77. package/dist/transports/SharedWorkerTransport.d.ts +10 -0
  78. package/dist/transports/SharedWorkerTransport.d.ts.map +1 -0
  79. package/dist/transports/SharedWorkerTransport.js +21 -0
  80. package/dist/transports/WebSocketTransport.d.ts +14 -0
  81. package/dist/transports/WebSocketTransport.d.ts.map +1 -0
  82. package/dist/transports/WebSocketTransport.js +39 -0
  83. package/dist/transports/WindowTransport.d.ts +10 -0
  84. package/dist/transports/WindowTransport.d.ts.map +1 -0
  85. package/dist/transports/WindowTransport.js +19 -0
  86. package/dist/transports/WorkerTransport.d.ts +10 -0
  87. package/dist/transports/WorkerTransport.d.ts.map +1 -0
  88. package/dist/transports/WorkerTransport.js +20 -0
  89. package/dist/transports/fields.d.ts +21 -0
  90. package/dist/transports/fields.d.ts.map +1 -0
  91. package/dist/transports/fields.js +0 -0
  92. package/package.json +45 -1
@@ -0,0 +1,7 @@
1
+ import RPCDecorator from "../core/RPCDecorator.js";
2
+ import SharedWorkerTransport from "../transports/SharedWorkerTransport.js";
3
+ function createSharedWorkerRPC(target, config) {
4
+ const { context, options } = config ?? {};
5
+ return RPCDecorator(new SharedWorkerTransport(target, options), context);
6
+ }
7
+ export { createSharedWorkerRPC };
@@ -0,0 +1,24 @@
1
+ import { ActionRecord } from '../RPCDecorator';
2
+ import { EntryOptions } from '../transports/fields';
3
+ export declare function createSharedWorkerGlobalScopeRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: SharedWorkerGlobalScope, config?: EntryOptions<EVENT, CONSUME>): Readonly<Omit<import("../core/RPCAction").default, "on" | "request"> & Pick<import("../fields").Transport, "getType" | "upset"> & {
4
+ request: <K extends keyof CONSUME>(...args: Parameters<CONSUME[K]> extends [] ? [keyname: K, reqops?: (Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
5
+ payload?: never;
6
+ } : StructuredSerializeOptions & {
7
+ targetOrigin?: string;
8
+ } & {
9
+ payload?: Parameters<CONSUME[K]>[0] | undefined;
10
+ retry?: number;
11
+ } & {
12
+ payload: Parameters<CONSUME[K]>[0];
13
+ }) | undefined] : [keyname: K, reqops: Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
14
+ payload?: never;
15
+ } : StructuredSerializeOptions & {
16
+ targetOrigin?: string;
17
+ } & {
18
+ payload?: Parameters<CONSUME[K]>[0] | undefined;
19
+ retry?: number;
20
+ } & {
21
+ payload: Parameters<CONSUME[K]>[0];
22
+ }]) => Promise<ReturnType<CONSUME[K]>>;
23
+ }>;
24
+ //# sourceMappingURL=sharedWorkerGlobalScope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharedWorkerGlobalScope.d.ts","sourceRoot":"","sources":["../../src/entry/sharedWorkerGlobalScope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,wBAAgB,gCAAgC,CAC9C,KAAK,SAAS,YAAY,EAC1B,OAAO,SAAS,YAAY,EAC5B,MAAM,EAAE,uBAAuB,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;GAGvE"}
@@ -0,0 +1,7 @@
1
+ import RPCDecorator from "../core/RPCDecorator.js";
2
+ import SharedWorkerGlobalScopeTransport from "../transports/SharedWorkerGlobalScopeTransport.js";
3
+ function createSharedWorkerGlobalScopeRPC(target, config) {
4
+ const { context, options } = config ?? {};
5
+ return RPCDecorator(new SharedWorkerGlobalScopeTransport(target, options), context);
6
+ }
7
+ export { createSharedWorkerGlobalScopeRPC };
@@ -0,0 +1,24 @@
1
+ import { ActionRecord } from '../RPCDecorator';
2
+ import { EntryOptions } from '../transports/fields';
3
+ export declare function createWebSocketRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: WebSocket, config?: EntryOptions<EVENT, CONSUME>): Readonly<Omit<import("../core/RPCAction").default, "on" | "request"> & Pick<import("../fields").Transport, "getType" | "upset"> & {
4
+ request: <K extends keyof CONSUME>(...args: Parameters<CONSUME[K]> extends [] ? [keyname: K, reqops?: (Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
5
+ payload?: never;
6
+ } : StructuredSerializeOptions & {
7
+ targetOrigin?: string;
8
+ } & {
9
+ payload?: Parameters<CONSUME[K]>[0] | undefined;
10
+ retry?: number;
11
+ } & {
12
+ payload: Parameters<CONSUME[K]>[0];
13
+ }) | undefined] : [keyname: K, reqops: Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
14
+ payload?: never;
15
+ } : StructuredSerializeOptions & {
16
+ targetOrigin?: string;
17
+ } & {
18
+ payload?: Parameters<CONSUME[K]>[0] | undefined;
19
+ retry?: number;
20
+ } & {
21
+ payload: Parameters<CONSUME[K]>[0];
22
+ }]) => Promise<ReturnType<CONSUME[K]>>;
23
+ }>;
24
+ //# sourceMappingURL=webSocket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webSocket.d.ts","sourceRoot":"","sources":["../../src/entry/webSocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,wBAAgB,kBAAkB,CAAC,KAAK,SAAS,YAAY,EAAE,OAAO,SAAS,YAAY,EACzF,MAAM,EAAE,SAAS,EACjB,MAAM,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;GAItC"}
@@ -0,0 +1,7 @@
1
+ import RPCDecorator from "../core/RPCDecorator.js";
2
+ import WebSocketTransport from "../transports/WebSocketTransport.js";
3
+ function createWebSocketRPC(target, config) {
4
+ const { context, options } = config ?? {};
5
+ return RPCDecorator(new WebSocketTransport(target, options), context);
6
+ }
7
+ export { createWebSocketRPC };
@@ -0,0 +1,24 @@
1
+ import { ActionRecord } from '../RPCDecorator';
2
+ import { EntryOptions } from '../transports/fields';
3
+ export declare function createWindowRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: Window | HTMLIFrameElement, config?: EntryOptions<EVENT, CONSUME>): Readonly<Omit<import("../core/RPCAction").default, "on" | "request"> & Pick<import("../fields").Transport, "getType" | "upset"> & {
4
+ request: <K extends keyof CONSUME>(...args: Parameters<CONSUME[K]> extends [] ? [keyname: K, reqops?: (Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
5
+ payload?: never;
6
+ } : StructuredSerializeOptions & {
7
+ targetOrigin?: string;
8
+ } & {
9
+ payload?: Parameters<CONSUME[K]>[0] | undefined;
10
+ retry?: number;
11
+ } & {
12
+ payload: Parameters<CONSUME[K]>[0];
13
+ }) | undefined] : [keyname: K, reqops: Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
14
+ payload?: never;
15
+ } : StructuredSerializeOptions & {
16
+ targetOrigin?: string;
17
+ } & {
18
+ payload?: Parameters<CONSUME[K]>[0] | undefined;
19
+ retry?: number;
20
+ } & {
21
+ payload: Parameters<CONSUME[K]>[0];
22
+ }]) => Promise<ReturnType<CONSUME[K]>>;
23
+ }>;
24
+ //# sourceMappingURL=window.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../src/entry/window.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,wBAAgB,eAAe,CAAC,KAAK,SAAS,YAAY,EAAE,OAAO,SAAS,YAAY,EACtF,MAAM,EAAE,MAAM,GAAG,iBAAiB,EAClC,MAAM,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;GAMtC"}
@@ -0,0 +1,8 @@
1
+ import RPCDecorator from "../core/RPCDecorator.js";
2
+ import WindowTransport from "../transports/WindowTransport.js";
3
+ function createWindowRPC(target, config) {
4
+ const { context, options } = config ?? {};
5
+ const instance = target instanceof HTMLIFrameElement ? target.contentWindow : target;
6
+ return RPCDecorator(instance ? new WindowTransport(instance, options) : null, context);
7
+ }
8
+ export { createWindowRPC };
@@ -0,0 +1,24 @@
1
+ import { ActionRecord } from '../RPCDecorator';
2
+ import { EntryOptions } from '../transports/fields';
3
+ export declare function createWorkerRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: Worker, config?: EntryOptions<EVENT, CONSUME>): Readonly<Omit<import("../core/RPCAction").default, "on" | "request"> & Pick<import("../fields").Transport, "getType" | "upset"> & {
4
+ request: <K extends keyof CONSUME>(...args: Parameters<CONSUME[K]> extends [] ? [keyname: K, reqops?: (Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
5
+ payload?: never;
6
+ } : StructuredSerializeOptions & {
7
+ targetOrigin?: string;
8
+ } & {
9
+ payload?: Parameters<CONSUME[K]>[0] | undefined;
10
+ retry?: number;
11
+ } & {
12
+ payload: Parameters<CONSUME[K]>[0];
13
+ }) | undefined] : [keyname: K, reqops: Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
14
+ payload?: never;
15
+ } : StructuredSerializeOptions & {
16
+ targetOrigin?: string;
17
+ } & {
18
+ payload?: Parameters<CONSUME[K]>[0] | undefined;
19
+ retry?: number;
20
+ } & {
21
+ payload: Parameters<CONSUME[K]>[0];
22
+ }]) => Promise<ReturnType<CONSUME[K]>>;
23
+ }>;
24
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/entry/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,wBAAgB,eAAe,CAAC,KAAK,SAAS,YAAY,EAAE,OAAO,SAAS,YAAY,EACtF,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;GAItC"}
@@ -0,0 +1,7 @@
1
+ import RPCDecorator from "../core/RPCDecorator.js";
2
+ import WorkerTransport from "../transports/WorkerTransport.js";
3
+ function createWorkerRPC(target, config) {
4
+ const { context, options } = config ?? {};
5
+ return RPCDecorator(new WorkerTransport(target, options), context);
6
+ }
7
+ export { createWorkerRPC };
package/dist/fields.d.ts CHANGED
@@ -13,10 +13,25 @@ export declare const TARGET_TYPE_STRINGS: Readonly<{
13
13
  Worker: "[object Worker]";
14
14
  DedicatedWorkerGlobalScope: "[object DedicatedWorkerGlobalScope]";
15
15
  }>;
16
+ export interface FactoryOptions {
17
+ message?: boolean | AddEventListenerOptions;
18
+ }
16
19
  export interface RPCInstanceContextIns {
17
20
  brodcastScope?: <T>(data: RequestOptions<T>, options?: ScopeProps) => void;
18
21
  mount?: (item: RPCItem, name?: string) => void;
19
22
  }
23
+ export interface Transport {
24
+ destory: () => void;
25
+ getType: () => string;
26
+ is: (source: MessageEventSource | null) => boolean;
27
+ onmessage: (listener: (ev: MessageEvent) => unknown) => void;
28
+ onremove: (listener: (ev: MessageEvent) => unknown) => void;
29
+ postMessage: (message: unknown, options?: IframeSerializeOptions) => void;
30
+ upset: (options: FactoryOptions) => void;
31
+ }
32
+ export type IframeSerializeOptions = StructuredSerializeOptions & {
33
+ targetOrigin?: string;
34
+ };
20
35
  export type RPCItem = Pick<RPCAction, 'broadcast'> & Pick<RPCFactory, 'getType'>;
21
36
  export type ScopeProps = {
22
37
  exclude?: Array<ValueOf<typeof TARGET_TYPE_STRINGS>>;
@@ -1 +1 @@
1
- {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,EAAE,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,UAAU,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEjC,eAAO,MAAM,kBAAkB,gDAA2C,CAAA;AAC1E,eAAO,MAAM,mBAAmB;;;;;;;;;;EAU9B,CAAA;AAEF,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,KAAK,IAAI,CAAA;IAC1E,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/C;AAED,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AAEhF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAA;IACpD,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAA;IACpD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA"}
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,EAAE,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,UAAU,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEjC,eAAO,MAAM,kBAAkB,gDAA2C,CAAA;AAC1E,eAAO,MAAM,mBAAmB;;;;;;;;;;EAU9B,CAAA;AAEF,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAA;CAC5C;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,KAAK,IAAI,CAAA;IAC1E,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/C;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,EAAE,MAAM,MAAM,CAAA;IACrB,EAAE,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,KAAK,OAAO,CAAA;IAClD,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,KAAK,IAAI,CAAA;IAC5D,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,KAAK,IAAI,CAAA;IAC3D,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,KAAK,IAAI,CAAA;IACzE,KAAK,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;CACzC;AAED,MAAM,MAAM,sBAAsB,GAAG,0BAA0B,GAAG;IAChE,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AAEhF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAA;IACpD,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAA;IACpD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export * from './createCtx';
2
- export { TARGET_TYPE_STRINGS } from './fields';
2
+ export { type RPCInstanceContextIns, TARGET_TYPE_STRINGS } from './fields';
3
3
  export { default as useRPC } from './hooks';
4
4
  export { default as RPCDecorator } from './RPCDecorator';
5
5
  export { default as RPCProvider } from './RPCProvider';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,OAAO,EAAE,KAAK,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAC1E,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { FC, PropsWithChildren } from 'react';
2
+ declare const RPCProvider: FC<PropsWithChildren>;
3
+ export default RPCProvider;
4
+ //# sourceMappingURL=RPCProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RPCProvider.d.ts","sourceRoot":"","sources":["../../src/react/RPCProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,iBAAiB,EAAkC,MAAM,OAAO,CAAA;AAW7E,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,iBAAiB,CA4CtC,CAAA;AAED,eAAe,WAAW,CAAA"}
@@ -0,0 +1,34 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useRef } from "react";
3
+ import { objectValues } from "../utils.js";
4
+ import { RPCInstanceContext, TARGET_TYPE_STRINGS } from "./fields.js";
5
+ const RPCProvider = ({ children })=>{
6
+ const list = useRef(new Map());
7
+ const brodcastScope = useCallback((data, options)=>{
8
+ const { exclude, include, typein, typeout } = options ?? {};
9
+ if (list.current.size > 0) {
10
+ const scope = objectValues(TARGET_TYPE_STRINGS).filter((item)=>!exclude?.includes(item)).filter((item)=>!include || include.includes(item)).map(String);
11
+ list.current.forEach((group, item)=>{
12
+ if (scope.includes(item.getType()) && !typeout?.includes(group) && (!typein || typein.includes(group))) item.broadcast(data);
13
+ });
14
+ }
15
+ }, []);
16
+ const mount = useCallback((data, name)=>{
17
+ const newMap = new Map(list.current);
18
+ if (void 0 !== name) newMap.set(data, name);
19
+ else newMap.delete(data);
20
+ list.current = newMap;
21
+ }, []);
22
+ useEffect(()=>()=>{
23
+ list.current = new Map();
24
+ }, []);
25
+ return /*#__PURE__*/ jsx(RPCInstanceContext.Provider, {
26
+ value: {
27
+ brodcastScope,
28
+ mount
29
+ },
30
+ children: children
31
+ });
32
+ };
33
+ const react_RPCProvider = RPCProvider;
34
+ export { react_RPCProvider as default };
@@ -0,0 +1,13 @@
1
+ import { ActionFunType, BrodcastItem } from '../core/RPCAction';
2
+ declare function createCtx<CTX extends Record<string, unknown>, ACTIONS extends Record<string, ActionFunType>, BRODCATS extends Record<string, BrodcastItem>>(factory: (ctx: Partial<CTX>) => ACTIONS, brodcast?: (ctx: Partial<CTX>) => BRODCATS): Readonly<{
3
+ actions: ACTIONS;
4
+ brodcasts: BRODCATS | undefined;
5
+ provider: (next: Partial<CTX>) => () => void;
6
+ }>;
7
+ declare function createService<CTX extends Record<string, unknown>>(): <ACTIONS extends Record<string, ActionFunType>, BRODCATS extends Record<string, BrodcastItem>>(factory: (ctx: Partial<CTX>) => ACTIONS, brodcast?: (ctx: Partial<CTX>) => BRODCATS) => Readonly<{
8
+ actions: ACTIONS;
9
+ brodcasts: BRODCATS | undefined;
10
+ provider: (next: Partial<CTX>) => () => void;
11
+ }>;
12
+ export { createCtx, createService };
13
+ //# sourceMappingURL=createCtx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createCtx.d.ts","sourceRoot":"","sources":["../../src/react/createCtx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAE/D,iBAAS,SAAS,CAChB,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAC7C,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAC7C,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ;;;qBAiB3D,OAAO,CAAC,GAAG,CAAC;GAYrC;AAED,iBAAS,aAAa,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAEtD,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAC7C,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAE7C,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EACvC,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ;;;;GAE7C;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAA"}
@@ -0,0 +1,33 @@
1
+ function createCtx(factory, brodcast) {
2
+ const ctx = {
3
+ current: null
4
+ };
5
+ const proxyCtx = new Proxy({}, {
6
+ get (_, key) {
7
+ return ctx.current ? Reflect.get(ctx.current, key) : void 0;
8
+ },
9
+ set () {
10
+ throw new Error('ctx is readonly');
11
+ }
12
+ });
13
+ const actions = factory(proxyCtx);
14
+ const brodcasts = brodcast?.(proxyCtx);
15
+ const provider = (next)=>{
16
+ ctx.current = {
17
+ ...ctx.current ?? {},
18
+ ...next
19
+ };
20
+ return ()=>{
21
+ ctx.current = null;
22
+ };
23
+ };
24
+ return Object.freeze({
25
+ actions,
26
+ brodcasts,
27
+ provider
28
+ });
29
+ }
30
+ function createService() {
31
+ return (factory, brodcast)=>createCtx(factory, brodcast);
32
+ }
33
+ export { createCtx, createService };
@@ -0,0 +1,30 @@
1
+ import RPCAction, { RequestOptions } from '../core/RPCAction';
2
+ import { Transport } from '../transports/fields';
3
+ import { ValueOf } from '../utils';
4
+ export declare const RPCInstanceContext: import("react").Context<RPCInstanceContextIns>;
5
+ export declare const TARGET_TYPE_STRINGS: Readonly<{
6
+ BroadcastChannel: "[object BroadcastChannel]";
7
+ WebSocket: "[object WebSocket]";
8
+ Window: "[object Window]";
9
+ ServiceWorkerRegistration: "[object ServiceWorkerRegistration]";
10
+ ServiceWorkerGlobalScope: "[object ServiceWorkerGlobalScope]";
11
+ SharedWorker: "[object SharedWorker]";
12
+ SharedWorkerGlobalScope: "[object SharedWorkerGlobalScope]";
13
+ Worker: "[object Worker]";
14
+ DedicatedWorkerGlobalScope: "[object DedicatedWorkerGlobalScope]";
15
+ }>;
16
+ export interface FactoryOptions {
17
+ message?: boolean | AddEventListenerOptions;
18
+ }
19
+ export interface RPCInstanceContextIns {
20
+ brodcastScope?: <T>(data: RequestOptions<T>, options?: ScopeProps) => void;
21
+ mount?: (item: RPCItem, name?: string) => void;
22
+ }
23
+ export type RPCItem = Pick<RPCAction, 'broadcast'> & Pick<Transport, 'getType'>;
24
+ export type ScopeProps = {
25
+ exclude?: Array<ValueOf<typeof TARGET_TYPE_STRINGS>>;
26
+ include?: Array<ValueOf<typeof TARGET_TYPE_STRINGS>>;
27
+ typein?: string[];
28
+ typeout?: string[];
29
+ };
30
+ //# sourceMappingURL=fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/react/fields.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,EAAE,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAElC,eAAO,MAAM,kBAAkB,gDAA2C,CAAA;AAC1E,eAAO,MAAM,mBAAmB;;;;;;;;;;EAU9B,CAAA;AAEF,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAA;CAC5C;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,KAAK,IAAI,CAAA;IAC1E,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/C;AAED,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;AAE/E,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAA;IACpD,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAA;IACpD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { createContext } from "react";
2
+ const RPCInstanceContext = createContext({});
3
+ const TARGET_TYPE_STRINGS = Object.freeze({
4
+ BroadcastChannel: '[object BroadcastChannel]',
5
+ WebSocket: '[object WebSocket]',
6
+ Window: '[object Window]',
7
+ ServiceWorkerRegistration: '[object ServiceWorkerRegistration]',
8
+ ServiceWorkerGlobalScope: '[object ServiceWorkerGlobalScope]',
9
+ SharedWorker: '[object SharedWorker]',
10
+ SharedWorkerGlobalScope: '[object SharedWorkerGlobalScope]',
11
+ Worker: '[object Worker]',
12
+ DedicatedWorkerGlobalScope: '[object DedicatedWorkerGlobalScope]'
13
+ });
14
+ export { RPCInstanceContext, TARGET_TYPE_STRINGS };
@@ -0,0 +1,44 @@
1
+ import RPCDecorator, { ActionRecord, DecoratorContext } from '../core/RPCDecorator';
2
+ import { EntryOptions, FactoryOptions } from '../transports/fields';
3
+ declare const useRPC: <EVENT extends ActionRecord, CONSUME extends ActionRecord, TARGET>(ops: RPCHooksOptions<EVENT, CONSUME> | RPCDriveOptions<EVENT, CONSUME, TARGET>) => Readonly<{
4
+ rpc: Readonly<Omit<Readonly<Omit<import("../core/RPCAction").default, "on" | "request"> & Pick<import("../fields").Transport, "getType" | "upset"> & {
5
+ request: <K extends keyof CONSUME>(...args: Parameters<CONSUME[K]> extends [] ? [keyname: K, reqops?: (Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
6
+ payload?: never;
7
+ } : StructuredSerializeOptions & {
8
+ targetOrigin?: string;
9
+ } & {
10
+ payload?: Parameters<CONSUME[K]>[0] | undefined;
11
+ retry?: number;
12
+ } & {
13
+ payload: Parameters<CONSUME[K]>[0];
14
+ }) | undefined] : [keyname: K, reqops: Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
15
+ payload?: never;
16
+ } : StructuredSerializeOptions & {
17
+ targetOrigin?: string;
18
+ } & {
19
+ payload?: Parameters<CONSUME[K]>[0] | undefined;
20
+ retry?: number;
21
+ } & {
22
+ payload: Parameters<CONSUME[K]>[0];
23
+ }]) => Promise<ReturnType<CONSUME[K]>>;
24
+ }>, "destroy">>;
25
+ brodcastScope: <T>(data: import("../core/RPCAction").RequestOptions<T>, options?: import("./fields").ScopeProps) => void;
26
+ mount: (name: string) => void;
27
+ connected: boolean;
28
+ }>;
29
+ export default useRPC;
30
+ interface RPCBaseOptions {
31
+ name?: string;
32
+ options?: FactoryOptions;
33
+ }
34
+ interface RPCDriveOptions<EVENT extends ActionRecord, CONSUME extends ActionRecord, TARGET> extends RPCBaseOptions, DecoratorContext<EVENT, CONSUME> {
35
+ drive: (target: TARGET, config?: EntryOptions<EVENT, CONSUME>) => RPCResult<EVENT, CONSUME>;
36
+ init: () => TARGET | null | Promise<TARGET | null>;
37
+ }
38
+ interface RPCHooksOptions<EVENT extends ActionRecord, CONSUME extends ActionRecord> extends RPCBaseOptions, DecoratorContext<EVENT, CONSUME> {
39
+ drive: (target: unknown, context?: EntryOptions<EVENT, CONSUME>) => Promise<RPCResult<EVENT, CONSUME>>;
40
+ init: () => TargetInit | Promise<TargetInit>;
41
+ }
42
+ type RPCResult<EVENT extends ActionRecord, CONSUME extends ActionRecord> = ReturnType<typeof RPCDecorator<EVENT, CONSUME>>;
43
+ type TargetInit = BroadcastChannel | ServiceWorkerRegistration | SharedWorker | WebSocket | Window | Worker | HTMLIFrameElement | null;
44
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACnF,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAMnE,QAAA,MAAM,MAAM,GAAI,KAAK,SAAS,YAAY,EAAE,OAAO,SAAS,YAAY,EAAE,MAAM,EAC9E,KAAK,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;kBAmDrE,MAAM;;EA8DhB,CAAA;AAED,eAAe,MAAM,CAAA;AAErB,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,cAAc,CAAA;CACzB;AAED,UAAU,eAAe,CAAC,KAAK,SAAS,YAAY,EAAE,OAAO,SAAS,YAAY,EAAE,MAAM,CACxF,SAAQ,cAAc,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC;IACxD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAC3F,IAAI,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CACnD;AAED,UAAU,eAAe,CAAC,KAAK,SAAS,YAAY,EAAE,OAAO,SAAS,YAAY,CAChF,SAAQ,cAAc,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC;IACxD,KAAK,EAAE,CACL,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,KACnC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;IACvC,IAAI,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;CAC7C;AAED,KAAK,SAAS,CAAC,KAAK,SAAS,YAAY,EAAE,OAAO,SAAS,YAAY,IAAI,UAAU,CACnF,OAAO,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CACpC,CAAA;AAGD,KAAK,UAAU,GACX,gBAAgB,GAChB,yBAAyB,GACzB,YAAY,GACZ,SAAS,GACT,MAAM,GACN,MAAM,GACN,iBAAiB,GACjB,IAAI,CAAA"}
@@ -0,0 +1,87 @@
1
+ import { useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
2
+ import RPCDecorator from "../core/RPCDecorator.js";
3
+ import { RPCInstanceContext } from "./fields.js";
4
+ const disableKey = [
5
+ 'destroy'
6
+ ];
7
+ const defaultBrod = ()=>{};
8
+ const useRPC = (ops)=>{
9
+ const { brodcastScope, mount } = useContext(RPCInstanceContext);
10
+ const [connected, setConnected] = useState(false);
11
+ const decoratorRef = useRef(null);
12
+ const processRef = useRef(Promise.resolve(null));
13
+ const opsRef = useRef(ops);
14
+ const isRPCResult = useCallback((data, key)=>null !== data && key in data, []);
15
+ const rpcIns = useMemo(()=>new Proxy({}, {
16
+ get (_, key) {
17
+ const decorator = decoratorRef.current;
18
+ const keyname = key.toString();
19
+ if (decorator && !disableKey.map(String).includes(keyname) && isRPCResult(decorator, keyname)) return decorator[keyname];
20
+ throw new Error(`outof decorator: ${key.toString()}`);
21
+ },
22
+ has (_, key) {
23
+ const decorator = decoratorRef.current;
24
+ const keyname = key.toString();
25
+ return null !== decorator && !disableKey.map(String).includes(keyname) && isRPCResult(decorator, keyname);
26
+ },
27
+ set () {
28
+ throw new Error('decorator is readonly');
29
+ }
30
+ }), [
31
+ decoratorRef,
32
+ isRPCResult
33
+ ]);
34
+ const mounHandle = useCallback((name)=>{
35
+ if (decoratorRef.current) mount?.(decoratorRef.current, name);
36
+ }, [
37
+ mount
38
+ ]);
39
+ useEffect(()=>{
40
+ const { config, options, drive, init, name = '', ...opConfig } = opsRef.current;
41
+ processRef.current = processRef.current.then(()=>init()).then((tar)=>tar instanceof HTMLIFrameElement ? tar.contentWindow : tar).then((tar)=>{
42
+ const context = {
43
+ ...opConfig,
44
+ config: {
45
+ ...config,
46
+ onConnect () {
47
+ config?.onConnect?.();
48
+ setConnected(true);
49
+ },
50
+ onDisconnect () {
51
+ config?.onDisconnect?.();
52
+ setConnected(false);
53
+ }
54
+ }
55
+ };
56
+ return tar ? drive(tar, {
57
+ context,
58
+ options
59
+ }) : RPCDecorator(null, context);
60
+ }).then((result)=>{
61
+ decoratorRef.current = result;
62
+ mount?.(result, name);
63
+ return result;
64
+ });
65
+ return ()=>{
66
+ processRef.current = processRef.current.then((result)=>{
67
+ setConnected(false);
68
+ if (result) {
69
+ mount?.(result);
70
+ result.destroy();
71
+ }
72
+ decoratorRef.current = null;
73
+ return null;
74
+ });
75
+ };
76
+ }, [
77
+ mount
78
+ ]);
79
+ return Object.freeze({
80
+ rpc: rpcIns,
81
+ brodcastScope: brodcastScope ?? defaultBrod,
82
+ mount: mounHandle,
83
+ connected
84
+ });
85
+ };
86
+ const hooks = useRPC;
87
+ export { hooks as default };
@@ -0,0 +1,5 @@
1
+ export * from './createCtx';
2
+ export { type RPCInstanceContextIns, TARGET_TYPE_STRINGS } from './fields';
3
+ export { default as useRPC } from './hooks';
4
+ export { default as RPCProvider } from './RPCProvider';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,OAAO,EAAE,KAAK,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAC1E,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { TARGET_TYPE_STRINGS } from "./fields.js";
2
+ import hooks from "./hooks.js";
3
+ import RPCProvider from "./RPCProvider.js";
4
+ export * from "./createCtx.js";
5
+ export { RPCProvider, TARGET_TYPE_STRINGS, hooks as useRPC };
@@ -0,0 +1,19 @@
1
+ import { IframeSerializeOptions, Transport } from '../fields';
2
+ declare abstract class BaseTransport<T extends TargetType = TargetType> implements Transport {
3
+ protected _target: T;
4
+ protected _options: FactoryOptions;
5
+ constructor(_target: T, _options?: FactoryOptions);
6
+ getType(): string;
7
+ is(source: MessageEventSource | null): boolean;
8
+ upset(options: FactoryOptions): void;
9
+ abstract destory(): void;
10
+ abstract onmessage(listener: (ev: MessageEvent) => unknown): void;
11
+ abstract onremove(listener: (ev: MessageEvent) => unknown): void;
12
+ abstract postMessage(message: unknown, options?: IframeSerializeOptions): void;
13
+ }
14
+ export default BaseTransport;
15
+ export interface FactoryOptions {
16
+ message?: boolean | AddEventListenerOptions;
17
+ }
18
+ export type TargetType = BroadcastChannel | WebSocket | Window | ServiceWorkerRegistration | ServiceWorkerGlobalScope | SharedWorker | SharedWorkerGlobalScope | Worker | DedicatedWorkerGlobalScope;
19
+ //# sourceMappingURL=BaseTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseTransport.d.ts","sourceRoot":"","sources":["../../src/transports/BaseTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAE7D,uBAAe,aAAa,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,CAAE,YAAW,SAAS;IAEhF,SAAS,CAAC,OAAO,EAAE,CAAC;IACpB,SAAS,CAAC,QAAQ,EAAE,cAAc;gBADxB,OAAO,EAAE,CAAC,EACV,QAAQ,GAAE,cAAmB;IAGzC,OAAO;IAIP,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAIpC,KAAK,CAAC,OAAO,EAAE,cAAc;IAM7B,QAAQ,CAAC,OAAO,IAAI,IAAI;IACxB,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,GAAG,IAAI;IAGjE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,GAAG,IAAI;IAChE,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAC/E;AAED,eAAe,aAAa,CAAA;AAE5B,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAA;CAC5C;AAID,MAAM,MAAM,UAAU,GAClB,gBAAgB,GAChB,SAAS,GACT,MAAM,GAEN,yBAAyB,GACzB,wBAAwB,GACxB,YAAY,GACZ,uBAAuB,GACvB,MAAM,GACN,0BAA0B,CAAA"}
@@ -0,0 +1,22 @@
1
+ class BaseTransport {
2
+ _target;
3
+ _options;
4
+ constructor(_target, _options = {}){
5
+ this._target = _target;
6
+ this._options = _options;
7
+ }
8
+ getType() {
9
+ return `${Object.prototype.toString.call(this._target)}`;
10
+ }
11
+ is(source) {
12
+ return this._target === source;
13
+ }
14
+ upset(options) {
15
+ this._options = {
16
+ ...this._options,
17
+ ...options
18
+ };
19
+ }
20
+ }
21
+ const transports_BaseTransport = BaseTransport;
22
+ export { transports_BaseTransport as default };
@@ -0,0 +1,9 @@
1
+ import BaseTransport from './BaseTransport';
2
+ declare class BroadcastChannelTransport extends BaseTransport<BroadcastChannel> {
3
+ destory(): void;
4
+ onmessage(listener: (ev: MessageEvent) => unknown): void;
5
+ onremove(listener: (ev: MessageEvent) => unknown): void;
6
+ postMessage(message: unknown): void;
7
+ }
8
+ export default BroadcastChannelTransport;
9
+ //# sourceMappingURL=BroadcastChannelTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BroadcastChannelTransport.d.ts","sourceRoot":"","sources":["../../src/transports/BroadcastChannelTransport.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,yBAA0B,SAAQ,aAAa,CAAC,gBAAgB,CAAC;IACrE,OAAO;IAIP,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,GAAG,IAAI;IAIxD,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,GAAG,IAAI;IAIvD,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAGpC;AAED,eAAe,yBAAyB,CAAA"}
@@ -0,0 +1,17 @@
1
+ import BaseTransport from "./BaseTransport.js";
2
+ class BroadcastChannelTransport extends BaseTransport {
3
+ destory() {
4
+ this._target.close();
5
+ }
6
+ onmessage(listener) {
7
+ this._target.addEventListener('message', listener, this._options.message);
8
+ }
9
+ onremove(listener) {
10
+ this._target.removeEventListener('message', listener, this._options.message);
11
+ }
12
+ postMessage(message) {
13
+ this._target.postMessage(message);
14
+ }
15
+ }
16
+ const transports_BroadcastChannelTransport = BroadcastChannelTransport;
17
+ export { transports_BroadcastChannelTransport as default };
@@ -0,0 +1,10 @@
1
+ import { IframeSerializeOptions } from '../fields';
2
+ import BaseTransport from './BaseTransport';
3
+ declare class DedicatedWorkerGlobalScopeTransport extends BaseTransport<DedicatedWorkerGlobalScope> {
4
+ destory(): void;
5
+ onmessage(listener: (ev: MessageEvent) => unknown): void;
6
+ onremove(listener: (ev: MessageEvent) => unknown): void;
7
+ postMessage(message: unknown, options?: IframeSerializeOptions): void;
8
+ }
9
+ export default DedicatedWorkerGlobalScopeTransport;
10
+ //# sourceMappingURL=DedicatedWorkerGlobalScopeTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DedicatedWorkerGlobalScopeTransport.d.ts","sourceRoot":"","sources":["../../src/transports/DedicatedWorkerGlobalScopeTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,mCAAoC,SAAQ,aAAa,CAAC,0BAA0B,CAAC;IACzF,OAAO;IAIP,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,GAAG,IAAI;IAIxD,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,GAAG,IAAI;IAIvD,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAItE;AAED,eAAe,mCAAmC,CAAA"}