@x-oasis/async-call-rpc-misc 0.1.38

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 (93) hide show
  1. package/README.md +13 -0
  2. package/dist/async-call-rpc-misc.cjs.development.js +221 -0
  3. package/dist/async-call-rpc-misc.cjs.development.js.map +1 -0
  4. package/dist/async-call-rpc-misc.cjs.production.min.js +2 -0
  5. package/dist/async-call-rpc-misc.cjs.production.min.js.map +1 -0
  6. package/dist/async-call-rpc-misc.esm.js +216 -0
  7. package/dist/async-call-rpc-misc.esm.js.map +1 -0
  8. package/dist/buffer/DataBuffer.d.ts +2 -0
  9. package/dist/buffer/ReadBuffer.d.ts +12 -0
  10. package/dist/buffer/WriteBuffer.d.ts +3 -0
  11. package/dist/buffer/index.d.ts +3 -0
  12. package/dist/channel-protocol/AbstractChannelProtocol.d.ts +51 -0
  13. package/dist/channel-protocol/Channel.d.ts +16 -0
  14. package/dist/channel-protocol/DeferredMessageChannelProtocol.d.ts +8 -0
  15. package/dist/channel-protocol/IPCMainChannelProtocol.d.ts +7 -0
  16. package/dist/channel-protocol/IPCMainGlobalChannelProtocol.d.ts +7 -0
  17. package/dist/channel-protocol/IPCRendererChannelProtocol.d.ts +8 -0
  18. package/dist/channel-protocol/IPCRendererMessageChannelProtocol.d.ts +8 -0
  19. package/dist/channel-protocol/MessageChannelProtocol.d.ts +7 -0
  20. package/dist/channel-protocol/ProcessChannelProtocol.d.ts +7 -0
  21. package/dist/channel-protocol/ProcessClientChannelProtocol.d.ts +7 -0
  22. package/dist/channel-protocol/middlewares/buffer.d.ts +18 -0
  23. package/dist/channel-protocol/middlewares/handleDisconnectedRequest.d.ts +7 -0
  24. package/dist/channel-protocol/middlewares/handlePortRequest.d.ts +3 -0
  25. package/dist/channel-protocol/middlewares/handleRequest.d.ts +3 -0
  26. package/dist/channel-protocol/middlewares/handleRequestUtils.d.ts +10 -0
  27. package/dist/channel-protocol/middlewares/handleResponse.d.ts +3 -0
  28. package/dist/channel-protocol/middlewares/index.d.ts +10 -0
  29. package/dist/channel-protocol/middlewares/logger.d.ts +4 -0
  30. package/dist/channel-protocol/middlewares/normalize.d.ts +12 -0
  31. package/dist/channel-protocol/middlewares/prepareRequestData.d.ts +28 -0
  32. package/dist/channel-protocol/middlewares/sendRequest.d.ts +6 -0
  33. package/dist/channel-protocol/middlewares/updateSeqInfo.d.ts +6 -0
  34. package/dist/channel-protocol/middlewares/utils.d.ts +3 -0
  35. package/dist/common.d.ts +4 -0
  36. package/dist/error.d.ts +12 -0
  37. package/dist/index.d.ts +5 -0
  38. package/dist/index.js +8 -0
  39. package/dist/rpc-service/ProxyRPCClient.d.ts +9 -0
  40. package/dist/rpc-service/RPCServiceHost.d.ts +11 -0
  41. package/dist/rpc-service/RPCServiceProvider.d.ts +9 -0
  42. package/dist/types/buffer.d.ts +4 -0
  43. package/dist/types/channel.d.ts +12 -0
  44. package/dist/types/index.d.ts +6 -0
  45. package/dist/types/messageChannel.d.ts +76 -0
  46. package/dist/types/middleware.d.ts +44 -0
  47. package/dist/types/proxyChannel.d.ts +3 -0
  48. package/dist/types/proxyService.d.ts +10 -0
  49. package/dist/types/rpc.d.ts +31 -0
  50. package/dist/types/rpcProtocol.d.ts +22 -0
  51. package/package.json +38 -0
  52. package/src/buffer/DataBuffer.ts +1 -0
  53. package/src/buffer/ReadBuffer.ts +41 -0
  54. package/src/buffer/WriteBuffer.ts +5 -0
  55. package/src/buffer/index.ts +3 -0
  56. package/src/channel-protocol/AbstractChannelProtocol.ts +204 -0
  57. package/src/channel-protocol/Channel.ts +37 -0
  58. package/src/channel-protocol/DeferredMessageChannelProtocol.ts +85 -0
  59. package/src/channel-protocol/IPCMainChannelProtocol.ts +65 -0
  60. package/src/channel-protocol/IPCMainGlobalChannelProtocol.ts +66 -0
  61. package/src/channel-protocol/IPCRendererChannelProtocol.ts +81 -0
  62. package/src/channel-protocol/IPCRendererMessageChannelProtocol.ts +79 -0
  63. package/src/channel-protocol/MessageChannelProtocol.ts +63 -0
  64. package/src/channel-protocol/ProcessChannelProtocol.ts +60 -0
  65. package/src/channel-protocol/ProcessClientChannelProtocol.ts +59 -0
  66. package/src/channel-protocol/middlewares/buffer.ts +33 -0
  67. package/src/channel-protocol/middlewares/handleDisconnectedRequest.ts +30 -0
  68. package/src/channel-protocol/middlewares/handlePortRequest.ts +118 -0
  69. package/src/channel-protocol/middlewares/handleRequest.ts +163 -0
  70. package/src/channel-protocol/middlewares/handleRequestUtils.ts +42 -0
  71. package/src/channel-protocol/middlewares/handleResponse.ts +38 -0
  72. package/src/channel-protocol/middlewares/index.ts +11 -0
  73. package/src/channel-protocol/middlewares/logger.ts +22 -0
  74. package/src/channel-protocol/middlewares/normalize.ts +28 -0
  75. package/src/channel-protocol/middlewares/prepareRequestData.ts +137 -0
  76. package/src/channel-protocol/middlewares/sendRequest.ts +15 -0
  77. package/src/channel-protocol/middlewares/updateSeqInfo.ts +27 -0
  78. package/src/channel-protocol/middlewares/utils.ts +67 -0
  79. package/src/common.ts +20 -0
  80. package/src/error.ts +32 -0
  81. package/src/index.ts +5 -0
  82. package/src/rpc-service/ProxyRPCClient.ts +82 -0
  83. package/src/rpc-service/RPCServiceHost.ts +35 -0
  84. package/src/rpc-service/RPCServiceProvider.ts +22 -0
  85. package/src/types/buffer.ts +5 -0
  86. package/src/types/channel.ts +24 -0
  87. package/src/types/index.ts +6 -0
  88. package/src/types/messageChannel.ts +134 -0
  89. package/src/types/middleware.ts +53 -0
  90. package/src/types/proxyChannel.ts +3 -0
  91. package/src/types/proxyService.ts +16 -0
  92. package/src/types/rpc.ts +61 -0
  93. package/src/types/rpcProtocol.ts +24 -0
@@ -0,0 +1,51 @@
1
+ import { Disposable } from '@x-oasis/disposable';
2
+ import { Deferred } from '@x-oasis/deferred';
3
+ import { SendingProps, IMessageChannel, ClientMiddleware, SenderMiddleware, AbstractChannelProtocolProps, PendingSendEntry } from '../types';
4
+ import RPCServiceHost from '../rpc-service/RPCServiceHost';
5
+ import { WriteBuffer, ReadBuffer } from '../buffer';
6
+ import { Channel } from './Channel';
7
+ declare abstract class AbstractChannelProtocol extends Disposable implements IMessageChannel {
8
+ private readonly _masterProcessName;
9
+ private _key;
10
+ channel: Channel;
11
+ private _serviceHost;
12
+ private readonly _description;
13
+ private _seqId;
14
+ protected _onMessageMiddleware: ClientMiddleware[];
15
+ private _senderMiddleware;
16
+ private _readBuffer;
17
+ private _writeBuffer;
18
+ private _isConnected;
19
+ ongoingRequests: Map<string, Deferred>;
20
+ pendingSendEntries: Set<PendingSendEntry>;
21
+ requestEvents: Map<string, any>;
22
+ private onDidConnectedEvent;
23
+ onDidConnected: (listener: Function) => import("@x-oasis/disposable").IDisposable;
24
+ private onDidDisconnectedEvent;
25
+ onDidDisconnected: (listener: Function) => import("@x-oasis/disposable").IDisposable;
26
+ constructor(props: AbstractChannelProtocolProps);
27
+ get serviceHost(): RPCServiceHost;
28
+ setServiceHost(serviceHost: RPCServiceHost): void;
29
+ get senderMiddleware(): SenderMiddleware[];
30
+ get readBuffer(): ReadBuffer;
31
+ get writeBuffer(): WriteBuffer;
32
+ get seqId(): string;
33
+ get description(): string;
34
+ get masterProcessName(): string;
35
+ addPendingSendEntry(entry: PendingSendEntry): void;
36
+ applyOnMessageMiddleware(fns: Function | Function[]): void;
37
+ applySendMiddleware(fns: Function | Function[]): void;
38
+ isConnected(): boolean;
39
+ resumePendingEntry(): void;
40
+ didConnected(): void;
41
+ protected bindChannel(channel: Channel): void;
42
+ connect(channel: Channel): void;
43
+ activate(): void;
44
+ disconnect(): void;
45
+ send(props: SendingProps, transfer?: MessagePort[]): Deferred | void;
46
+ send(requestPath: string, fnName: string, ...args: any[]): Deferred | void;
47
+ sendReply(...args: any[]): void;
48
+ onMessage(...args: any[]): void;
49
+ runWithMiddlewares(middlewares: ClientMiddleware[], ...args: any[]): void;
50
+ }
51
+ export default AbstractChannelProtocol;
@@ -0,0 +1,16 @@
1
+ import { Emitter } from '@x-oasis/emitter';
2
+ import { Disposable } from '@x-oasis/disposable';
3
+ declare type ChannelSend = (...args: any[]) => void;
4
+ declare type ChannelInitListener = (emitter: Emitter) => void;
5
+ declare type ChannelProps = {
6
+ send: ChannelSend;
7
+ initListener: ChannelInitListener;
8
+ };
9
+ export declare class Channel extends Disposable {
10
+ private _send;
11
+ emitter: Emitter;
12
+ constructor(props: ChannelProps);
13
+ send(...args: any[]): void;
14
+ on(eventName: string, listener: Function): void;
15
+ }
16
+ export {};
@@ -0,0 +1,8 @@
1
+ import AbstractChannelProtocol from './AbstractChannelProtocol';
2
+ import { MainPort, DeferredMessageChannelProtocolProps } from '../types';
3
+ export default class DeferredMessageChannelProtocol extends AbstractChannelProtocol {
4
+ private port;
5
+ constructor(props: DeferredMessageChannelProtocolProps);
6
+ bindPort(port: MainPort): void;
7
+ disconnect(): void;
8
+ }
@@ -0,0 +1,7 @@
1
+ import { IPCMainChannelProtocolProps } from '../types';
2
+ import AbstractChannelProtocol from './AbstractChannelProtocol';
3
+ export default class IPCMainChannelProtocol extends AbstractChannelProtocol {
4
+ private channelName;
5
+ constructor(props: IPCMainChannelProtocolProps);
6
+ disconnect(): void;
7
+ }
@@ -0,0 +1,7 @@
1
+ import { IPCMainGlobalChannelProtocolProps } from '../types';
2
+ import AbstractChannelProtocol from './AbstractChannelProtocol';
3
+ export default class IPCMainGlobalChannelProtocol extends AbstractChannelProtocol {
4
+ private channelName;
5
+ constructor(props: IPCMainGlobalChannelProtocolProps);
6
+ disconnect(): void;
7
+ }
@@ -0,0 +1,8 @@
1
+ import { IPCRendererChannelProtocolProps } from '../types';
2
+ import AbstractChannelProtocol from './AbstractChannelProtocol';
3
+ declare class IPCRendererChannelProtocol extends AbstractChannelProtocol {
4
+ private channelName;
5
+ constructor(props: IPCRendererChannelProtocolProps);
6
+ disconnect(): void;
7
+ }
8
+ export default IPCRendererChannelProtocol;
@@ -0,0 +1,8 @@
1
+ import AbstractChannelProtocol from './AbstractChannelProtocol';
2
+ import { MainPort, MessageChannelProtocolProps } from '../types';
3
+ export default class IPCRendererMessageChannelProtocol extends AbstractChannelProtocol {
4
+ private readonly port;
5
+ constructor(props: MessageChannelProtocolProps);
6
+ bindPort(port: MainPort): void;
7
+ disconnect(): void;
8
+ }
@@ -0,0 +1,7 @@
1
+ import AbstractChannelProtocol from './AbstractChannelProtocol';
2
+ import { MessageChannelProtocolProps } from '../types';
3
+ export default class MessageChannelProtocol extends AbstractChannelProtocol {
4
+ private readonly port;
5
+ constructor(props: MessageChannelProtocolProps);
6
+ disconnect(): void;
7
+ }
@@ -0,0 +1,7 @@
1
+ import AbstractChannelProtocol from './AbstractChannelProtocol';
2
+ import { ProcessChannelProtocolProps } from '../types';
3
+ export default class ProcessChannelProtocol extends AbstractChannelProtocol {
4
+ private readonly process;
5
+ constructor(props: ProcessChannelProtocolProps);
6
+ disconnect(): void;
7
+ }
@@ -0,0 +1,7 @@
1
+ import AbstractChannelProtocol from './AbstractChannelProtocol';
2
+ import { MessageChannelProtocolProps } from '../types';
3
+ export default class ProcessClientChannelProtocol extends AbstractChannelProtocol {
4
+ private readonly port;
5
+ constructor(props: MessageChannelProtocolProps);
6
+ disconnect(): void;
7
+ }
@@ -0,0 +1,18 @@
1
+ import { NormalizedRawMessageOutput, SenderMiddlewareOutput, SendMiddlewareLifecycle } from '../../types';
2
+ import AbstractChannelProtocol from '../AbstractChannelProtocol';
3
+ export declare const serialize: (channel: AbstractChannelProtocol) => {
4
+ (value: SenderMiddlewareOutput): {
5
+ data: string;
6
+ transfer: any;
7
+ seqId: number;
8
+ returnValue: import("@x-oasis/deferred").Deferred<any>;
9
+ isOptionsRequest: boolean;
10
+ middlewareContext: import("../../types").MiddlewareContext;
11
+ };
12
+ lifecycle: SendMiddlewareLifecycle;
13
+ };
14
+ export declare const deserialize: (channel: AbstractChannelProtocol) => (value: NormalizedRawMessageOutput) => {
15
+ data: string;
16
+ event: any;
17
+ ports: any;
18
+ };
@@ -0,0 +1,7 @@
1
+ import { SenderMiddlewareOutput, SendMiddlewareLifecycle } from '../../types';
2
+ import AbstractChannelProtocol from '../AbstractChannelProtocol';
3
+ export declare const handleDisconnectedRequest: (protocol: AbstractChannelProtocol) => {
4
+ (value: SenderMiddlewareOutput): SenderMiddlewareOutput;
5
+ displayName: string;
6
+ lifecycle: SendMiddlewareLifecycle;
7
+ };
@@ -0,0 +1,3 @@
1
+ import { DeserializedMessageOutput } from '../../types';
2
+ import AbstractChannelProtocol from '../AbstractChannelProtocol';
3
+ export declare const handlePortRequest: (protocol: AbstractChannelProtocol) => (message: DeserializedMessageOutput) => DeserializedMessageOutput;
@@ -0,0 +1,3 @@
1
+ import { DeserializedMessageOutput } from '../../types';
2
+ import AbstractChannelProtocol from '../AbstractChannelProtocol';
3
+ export declare const handleRequest: (protocol: AbstractChannelProtocol) => (message: DeserializedMessageOutput) => DeserializedMessageOutput;
@@ -0,0 +1,10 @@
1
+ import RPCServiceHost from '../../rpc-service/RPCServiceHost';
2
+ import AbstractChannelProtocol from '../AbstractChannelProtocol';
3
+ export declare const handleAcquirePort: (props: {
4
+ protocol: AbstractChannelProtocol;
5
+ serviceHost: RPCServiceHost;
6
+ requestPath: string;
7
+ fnName: string;
8
+ seqId: string;
9
+ args: any[];
10
+ }) => any[];
@@ -0,0 +1,3 @@
1
+ import { DeserializedMessageOutput } from '../../types';
2
+ import AbstractChannelProtocol from '../AbstractChannelProtocol';
3
+ export declare const handleResponse: (protocol: AbstractChannelProtocol) => (message: DeserializedMessageOutput) => DeserializedMessageOutput;
@@ -0,0 +1,10 @@
1
+ export * from './buffer';
2
+ export * from './handleRequest';
3
+ export * from './normalize';
4
+ export * from './handleResponse';
5
+ export * from './prepareRequestData';
6
+ export * from './updateSeqInfo';
7
+ export * from './handlePortRequest';
8
+ export * from './sendRequest';
9
+ export * from './handleDisconnectedRequest';
10
+ export { runMiddlewares } from './utils';
@@ -0,0 +1,4 @@
1
+ import AbstractChannelProtocol from '../AbstractChannelProtocol';
2
+ import { NormalizedRawMessageOutput } from '../../types';
3
+ export declare const createSenderLogger: (logService: any) => (channel: AbstractChannelProtocol) => (value: NormalizedRawMessageOutput) => NormalizedRawMessageOutput;
4
+ export declare const createClientLogger: (logService: any) => (channel: AbstractChannelProtocol) => (value: NormalizedRawMessageOutput) => NormalizedRawMessageOutput;
@@ -0,0 +1,12 @@
1
+ import { NormalizedRawMessageOutput } from '../../types';
2
+ export declare const normalizeMessageChannelRawMessage: () => (event: MessageEvent) => NormalizedRawMessageOutput;
3
+ export declare const normalizeIPCChannelRawMessage: () => (event: MessageEvent, data: string) => {
4
+ event: MessageEvent;
5
+ data: string;
6
+ ports: readonly MessagePort[];
7
+ };
8
+ export declare const processClientRawMessage: () => (data: string) => {
9
+ event: any;
10
+ data: string;
11
+ ports: any[];
12
+ };
@@ -0,0 +1,28 @@
1
+ import AbstractChannelProtocol from '../AbstractChannelProtocol';
2
+ import { SendingProps, SendMiddlewareLifecycle } from '../../types';
3
+ export declare const preparePortData: (channel: AbstractChannelProtocol) => {
4
+ (props: string | SendingProps, ...args: any[]): {
5
+ seqId: string;
6
+ transfer: any[];
7
+ isOptionsRequest: boolean;
8
+ data: any[][];
9
+ };
10
+ lifecycle: SendMiddlewareLifecycle;
11
+ };
12
+ export declare const prepareHostPortData: (channel: AbstractChannelProtocol) => {
13
+ (props: string | SendingProps, ...args: any[]): {
14
+ seqId: string;
15
+ transfer: any[];
16
+ isOptionsRequest: boolean;
17
+ data: any[][];
18
+ };
19
+ lifecycle: SendMiddlewareLifecycle;
20
+ };
21
+ export declare const prepareNormalData: (channel: AbstractChannelProtocol) => {
22
+ (props: string | SendingProps, ...args: any[]): {
23
+ seqId: string;
24
+ isOptionsRequest: boolean;
25
+ data: any[][];
26
+ };
27
+ lifecycle: SendMiddlewareLifecycle;
28
+ };
@@ -0,0 +1,6 @@
1
+ import { SenderMiddlewareOutput, SendMiddlewareLifecycle } from '../../types';
2
+ import AbstractChannelProtocol from '../AbstractChannelProtocol';
3
+ export declare const sendRequest: (channelProtocol: AbstractChannelProtocol) => {
4
+ (value: SenderMiddlewareOutput): SenderMiddlewareOutput;
5
+ lifecycle: SendMiddlewareLifecycle;
6
+ };
@@ -0,0 +1,6 @@
1
+ import { SenderMiddlewareOutput, SendMiddlewareLifecycle } from '../../types';
2
+ import AbstractChannelProtocol from '../AbstractChannelProtocol';
3
+ export declare const updateSeqInfo: (channelProtocol: AbstractChannelProtocol) => {
4
+ (value: SenderMiddlewareOutput): SenderMiddlewareOutput;
5
+ lifecycle: SendMiddlewareLifecycle;
6
+ };
@@ -0,0 +1,3 @@
1
+ import { MiddlewareContext, PendingSendEntry } from '../../types';
2
+ export declare const resumeMiddlewares: (middlewares: any, entry: PendingSendEntry) => any;
3
+ export declare const runMiddlewares: (middlewares: any, args: any[], _context?: MiddlewareContext) => any;
@@ -0,0 +1,4 @@
1
+ export declare const isEventMethod: (name: string) => boolean;
2
+ export declare const isAssignPassingPortMethod: (name: string) => boolean;
3
+ export declare const isAcquirePortMethod: (name: string) => boolean;
4
+ export declare const isOptionsMethod: (name: string) => boolean;
@@ -0,0 +1,12 @@
1
+ export interface ErrorResponseDetail<Error = unknown> {
2
+ readonly code: number;
3
+ readonly message: string;
4
+ readonly data?: Error;
5
+ }
6
+ export declare type ID = string | number | null | undefined;
7
+ export interface ErrorResponse<Error = unknown> {
8
+ readonly jsonrpc: '2.0';
9
+ readonly id?: ID;
10
+ readonly error: ErrorResponseDetail<Error>;
11
+ }
12
+ export declare const makeErrorResponse: <T>(id: ID, code: number, message: string, data?: T) => ErrorResponse<T>;
@@ -0,0 +1,5 @@
1
+ export { default as RPCServiceHost } from './rpc-service/RPCServiceHost';
2
+ export { default as rpcServiceProvider } from './rpc-service/RPCServiceProvider';
3
+ export { default as ProxyRPCClient } from './rpc-service/ProxyRPCClient';
4
+ export * from './types';
5
+ export { isEventMethod } from './common';
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+
2
+ 'use strict'
3
+
4
+ if (process.env.NODE_ENV === 'production') {
5
+ module.exports = require('./async-call-rpc-misc.cjs.production.min.js')
6
+ } else {
7
+ module.exports = require('./async-call-rpc-misc.cjs.development.js')
8
+ }
@@ -0,0 +1,9 @@
1
+ import { ProxyRPCClientProps } from '../types';
2
+ declare class ProxyRPCClient {
3
+ private requestPath;
4
+ private _channelProtocol;
5
+ constructor(props: ProxyRPCClientProps);
6
+ get channelProtocol(): import("../channel-protocol/AbstractChannelProtocol").default;
7
+ createProxy<T = object>(): T;
8
+ }
9
+ export default ProxyRPCClient;
@@ -0,0 +1,11 @@
1
+ import { IService, ServiceHandlerPath } from '../types';
2
+ declare class RPCServiceHost {
3
+ protected readonly hostPath: string;
4
+ handlersMap: Map<string, any>;
5
+ constructor(hostPath: string);
6
+ registerServiceHandler(handlerPath: ServiceHandlerPath, service: IService): void;
7
+ getHandlers(handlerPath: ServiceHandlerPath): any;
8
+ getHandler(handlerPath: ServiceHandlerPath, fnName: string): any;
9
+ merge(serviceHost: RPCServiceHost): void;
10
+ }
11
+ export default RPCServiceHost;
@@ -0,0 +1,9 @@
1
+ import RPCServiceHandler from './RPCServiceHost';
2
+ declare class RPCServiceProvider {
3
+ private hostMap;
4
+ getHost(hostPath: string): RPCServiceHandler;
5
+ registerHost(hostPath: string): RPCServiceHandler;
6
+ resetHost(hostPath: string): void;
7
+ }
8
+ declare const _default: RPCServiceProvider;
9
+ export default _default;
@@ -0,0 +1,4 @@
1
+ export declare type DataBuffer = {
2
+ flush: () => void;
3
+ drain: () => void;
4
+ };
@@ -0,0 +1,12 @@
1
+ export declare type IMessageChannelOnClose = () => void;
2
+ export declare type IMessageChannelOnError = () => void;
3
+ export declare type IMessageChannelOnMessage = (message: any) => void;
4
+ export declare type IMessageChannelSend = (requestPath: string, fnName: string, ...args: any[]) => void;
5
+ export declare type IMessageChannelDisconnect = () => void;
6
+ export declare type IMessageChannel = {
7
+ onClose?: IMessageChannelOnClose;
8
+ onError?: IMessageChannelOnError;
9
+ onMessage: IMessageChannelOnMessage;
10
+ send: IMessageChannelSend;
11
+ disconnect: IMessageChannelDisconnect;
12
+ };
@@ -0,0 +1,6 @@
1
+ export * from './channel';
2
+ export * from './messageChannel';
3
+ export * from './rpc';
4
+ export * from './proxyChannel';
5
+ export * from './proxyService';
6
+ export * from './middleware';
@@ -0,0 +1,76 @@
1
+ /// <reference types="node" />
2
+ import { IpcRenderer, UtilityProcess, WebContents } from 'electron';
3
+ import MessageChannelProtocol from '../channel-protocol/MessageChannelProtocol';
4
+ import RPCServiceHost from '../rpc-service/RPCServiceHost';
5
+ export interface ChannelPort {
6
+ on(event: 'message', listener: (messageEvent: MessageEvent) => void): this;
7
+ removeListener(event: 'message', listener: (messageEvent: MessageEvent) => void): this;
8
+ postMessage(message: any, transfer?: MainPort[]): void;
9
+ }
10
+ export declare type UtilityMessageChannelPortStoreProps = {
11
+ name: string;
12
+ port: ParentPort;
13
+ masterProcessName: string;
14
+ clientMiddlewares?: ClientMiddleware[];
15
+ senderMiddlewares?: SenderMiddleware[];
16
+ };
17
+ export declare type OnMessageEntry = {
18
+ data: any;
19
+ ports: any;
20
+ };
21
+ export declare type SenderEntry = any;
22
+ export declare type ClientMiddleware = (channel?: MessageChannelProtocol) => (v: OnMessageEntry) => OnMessageEntry;
23
+ export declare type SenderMiddleware = (channel?: MessageChannelProtocol) => (data: SenderEntry) => SenderEntry;
24
+ export declare type AbstractChannelProtocolProps = {
25
+ serviceHost?: RPCServiceHost;
26
+ connected?: boolean;
27
+ description?: string;
28
+ masterProcessName?: string;
29
+ clientMiddlewares?: ClientMiddleware[];
30
+ senderMiddlewares?: SenderMiddleware[];
31
+ };
32
+ export declare type DeferredMessageChannelProtocolProps = AbstractChannelProtocolProps & {
33
+ port?: MainPort;
34
+ };
35
+ export declare type MessageChannelProtocolProps = AbstractChannelProtocolProps & {
36
+ port?: MainPort;
37
+ };
38
+ export declare type ProcessChannelProtocolProps = {
39
+ process: UtilityProcess;
40
+ } & AbstractChannelProtocolProps;
41
+ export declare type IPCMainGlobalChannelProtocolProps = AbstractChannelProtocolProps & {
42
+ channelName: string;
43
+ };
44
+ export declare type IPCMainChannelProtocolProps = {
45
+ channelName: string;
46
+ webContents: WebContents;
47
+ } & AbstractChannelProtocolProps;
48
+ export declare type IPCRendererChannelProtocolProps = {
49
+ channelName: string;
50
+ ipcRenderer: IpcRenderer;
51
+ projectName: string;
52
+ } & AbstractChannelProtocolProps;
53
+ export interface ParentPort extends NodeJS.EventEmitter {
54
+ on(event: 'message', listener: (messageEvent: MessageEvent) => void): this;
55
+ once(event: 'message', listener: (messageEvent: MessageEvent) => void): this;
56
+ addListener(event: 'message', listener: (messageEvent: MessageEvent) => void): this;
57
+ removeListener(event: 'message', listener: (messageEvent: MessageEvent) => void): this;
58
+ postMessage(message: any): void;
59
+ }
60
+ export declare type UtilityNodeJSProcess = NodeJS.Process;
61
+ export interface MainPort extends NodeJS.EventEmitter {
62
+ on(event: 'close', listener: Function): this;
63
+ on(event: 'message', listener: (messageEvent: MessageEvent) => void): this;
64
+ off(event: 'close', listener: Function): this;
65
+ off(event: 'message', listener: (messageEvent: MessageEvent) => void): this;
66
+ once(event: 'close', listener: Function): this;
67
+ once(event: 'message', listener: (messageEvent: MessageEvent) => void): this;
68
+ addListener(event: 'close', listener: Function): this;
69
+ addListener(event: 'message', listener: (messageEvent: MessageEvent) => void): this;
70
+ removeListener(event: 'close', listener: Function): this;
71
+ removeListener(event: 'message', listener: (messageEvent: MessageEvent) => void): this;
72
+ close(): void;
73
+ postMessage(message: any, transfer?: MainPort[]): void;
74
+ start(): void;
75
+ }
76
+ export declare function isUtilityProcess(process: NodeJS.Process): process is UtilityNodeJSProcess;
@@ -0,0 +1,44 @@
1
+ import { Deferred } from '@x-oasis/deferred';
2
+ import { HostRequestEntry, RequestEntry } from './rpc';
3
+ export declare type MiddlewareFunction = {
4
+ (...args: any[]): any;
5
+ displayName?: string;
6
+ lifecycle?: SendMiddlewareLifecycle;
7
+ };
8
+ export declare type MessageOutput = {
9
+ event: any;
10
+ ports: any;
11
+ };
12
+ export declare type NormalizedRawMessageOutput = MessageOutput & {
13
+ data: string;
14
+ };
15
+ export declare type DeserializedMessageOutput = MessageOutput & {
16
+ data: HostRequestEntry | RequestEntry;
17
+ };
18
+ export declare type SenderMiddlewareOutput = {
19
+ data: any;
20
+ transfer: any;
21
+ seqId: number;
22
+ returnValue: Deferred;
23
+ isOptionsRequest: boolean;
24
+ middlewareContext: MiddlewareContext;
25
+ };
26
+ export declare type PendingSendEntry = SenderMiddlewareOutput & {
27
+ fnName: string;
28
+ lifecycle: SendMiddlewareLifecycle;
29
+ middlewareContext: MiddlewareContext;
30
+ };
31
+ export declare type MiddlewareContext = {
32
+ isResumed?: boolean;
33
+ startLifecycle: SendMiddlewareLifecycle;
34
+ minLifecycle: SendMiddlewareLifecycle;
35
+ reserved: PendingSendEntry;
36
+ };
37
+ export declare enum SendMiddlewareLifecycle {
38
+ Initial = 0,
39
+ Prepare = 10,
40
+ Transfrom = 20,
41
+ DataOperation = 30,
42
+ Send = 40,
43
+ Aborted = 100
44
+ }
@@ -0,0 +1,3 @@
1
+ export declare type ProxyChannelProps = {
2
+ name: string;
3
+ };
@@ -0,0 +1,10 @@
1
+ import AbstractChannelProtocol from '../channel-protocol/AbstractChannelProtocol';
2
+ export declare type IService = any;
3
+ export declare type ServiceHandlerPath = string;
4
+ export declare type ProxyRPCClientChannel = AbstractChannelProtocol | {
5
+ (): AbstractChannelProtocol;
6
+ };
7
+ export declare type ProxyRPCClientProps = {
8
+ requestPath: string;
9
+ channel: ProxyRPCClientChannel;
10
+ };
@@ -0,0 +1,31 @@
1
+ export declare enum RequestType {
2
+ PromiseRequest = "pr",
3
+ PromiseAbort = "pa",
4
+ SignalRequest = "sr",
5
+ SignalAbort = "sa"
6
+ }
7
+ export declare type RequestRawSequenceId = number;
8
+ export declare type RequestSequenceId = string;
9
+ export declare type RequestServicePath = string;
10
+ export declare type RequestFnName = string;
11
+ export declare type RequestEntryHeader = [RequestType, RequestSequenceId, RequestServicePath, RequestFnName];
12
+ export declare type RequestEntryBody = any;
13
+ export declare type RequestEntry = [RequestEntryHeader, RequestEntryBody];
14
+ export declare enum ResponseType {
15
+ ReturnSuccess = "rs",
16
+ ReturnFail = "rf",
17
+ PortSuccess = "ps",
18
+ PortFail = "pf"
19
+ }
20
+ export declare type ResponseEntryHeader = [ResponseType, RequestSequenceId];
21
+ export declare type ResponseEntryBody = any;
22
+ export declare type HostName = string;
23
+ export declare type HostRequestEntryHeader = [RequestType, RequestSequenceId, RequestServicePath, RequestFnName, HostName];
24
+ export declare type HostRequestEntryBody = any;
25
+ export declare type HostRequestEntry = [HostRequestEntryHeader, HostRequestEntryBody];
26
+ export declare type SendingProps = {
27
+ requestPath?: string;
28
+ fnName?: string;
29
+ args?: any;
30
+ isOptionsRequest?: boolean;
31
+ };
@@ -0,0 +1,22 @@
1
+ export declare type IRPCProtocolServer = {
2
+ source: any;
3
+ encoder: null;
4
+ decoder: null;
5
+ onRequest: () => {};
6
+ handleRequest: () => {};
7
+ sendReply: () => {};
8
+ };
9
+ export declare type IRPCProtocolClient = {
10
+ source: any;
11
+ encode: () => {};
12
+ decode: () => {};
13
+ sendRequest: () => {};
14
+ onReply: () => {};
15
+ handleReply: () => {};
16
+ };
17
+ export declare type IRPCProtocol = {
18
+ encode: Function;
19
+ decode: Function;
20
+ onMessage: Function;
21
+ send: Function;
22
+ };
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@x-oasis/async-call-rpc-misc",
3
+ "version": "0.1.38",
4
+ "description": "async-call-rpc-misc function",
5
+ "main": "dist/index.js",
6
+ "typings": "dist/index.d.ts",
7
+ "module": "dist/async-call-rpc-misc.esm.js",
8
+ "files": [
9
+ "dist",
10
+ "index.ts",
11
+ "src"
12
+ ],
13
+ "publishConfig": {
14
+ "access": "public"
15
+ },
16
+ "author": "",
17
+ "license": "ISC",
18
+ "devDependencies": {
19
+ "tsdx": "^0.14.1"
20
+ },
21
+ "dependencies": {
22
+ "@x-oasis/is-promise": "0.1.38",
23
+ "@x-oasis/emitter": "0.1.38",
24
+ "@x-oasis/deferred": "0.1.38",
25
+ "@x-oasis/disposable": "0.1.38",
26
+ "@x-oasis/id": "0.1.38",
27
+ "@x-oasis/is-ascii": "0.1.38"
28
+ },
29
+ "peerDependencies": {
30
+ "electron": ">=20.0.0"
31
+ },
32
+ "scripts": {
33
+ "build": "tsdx build --tsconfig tsconfig.build.json",
34
+ "clean": "rimraf ./dist",
35
+ "test": "vitest",
36
+ "compile": "tsc -p tsconfig.build.json"
37
+ }
38
+ }
@@ -0,0 +1 @@
1
+ export default class DataBuffer {}