@comapeo/ipc 3.0.0 → 5.0.0-prerelease.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +6 -78
- package/dist/client.js +3 -4
- package/dist/index.d.ts +2 -2
- package/dist/server.d.ts +4 -2
- package/dist/server.js +7 -6
- package/package.json +36 -41
package/dist/client.d.ts
CHANGED
|
@@ -1,89 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @param {import('./lib/sub-channel.js').MessagePortLike} messagePort
|
|
3
|
-
* @param {
|
|
4
|
-
* @param {number} [opts.timeout]
|
|
3
|
+
* @param {Parameters<typeof createClient>[1]} [opts]
|
|
5
4
|
*
|
|
6
5
|
* @returns {MapeoClientApi}
|
|
7
6
|
*/
|
|
8
|
-
export function createMapeoClient(messagePort: import(
|
|
9
|
-
timeout?: number | undefined;
|
|
10
|
-
} | undefined): MapeoClientApi;
|
|
7
|
+
export function createMapeoClient(messagePort: import("./lib/sub-channel.js").MessagePortLike, opts?: Parameters<typeof createClient>[1]): MapeoClientApi;
|
|
11
8
|
/**
|
|
12
9
|
* @param {MapeoClientApi} client client created with `createMapeoClient`
|
|
13
10
|
* @returns {Promise<void>}
|
|
14
11
|
*/
|
|
15
12
|
export function closeMapeoClient(client: MapeoClientApi): Promise<void>;
|
|
16
|
-
export type MapeoProjectApi = import(
|
|
17
|
-
export type MapeoClientApi = {
|
|
18
|
-
addListener: <U extends "local-peers">(event: U, listener: import("@comapeo/core/dist/mapeo-manager.js").MapeoManagerEvents[U]) => import("@comapeo/core").MapeoManager;
|
|
19
|
-
on: <U_1 extends "local-peers">(event: U_1, listener: import("@comapeo/core/dist/mapeo-manager.js").MapeoManagerEvents[U_1]) => import("@comapeo/core").MapeoManager;
|
|
20
|
-
once: <U_2 extends "local-peers">(event: U_2, listener: import("@comapeo/core/dist/mapeo-manager.js").MapeoManagerEvents[U_2]) => import("@comapeo/core").MapeoManager;
|
|
21
|
-
removeListener: <U_3 extends "local-peers">(event: U_3, listener: import("@comapeo/core/dist/mapeo-manager.js").MapeoManagerEvents[U_3]) => import("@comapeo/core").MapeoManager;
|
|
22
|
-
off: <U_4 extends "local-peers">(event: U_4, listener: import("@comapeo/core/dist/mapeo-manager.js").MapeoManagerEvents[U_4]) => import("@comapeo/core").MapeoManager;
|
|
23
|
-
removeAllListeners: (event?: "local-peers" | undefined) => import("@comapeo/core").MapeoManager;
|
|
24
|
-
listeners: <U_5 extends "local-peers">(type: U_5) => import("@comapeo/core/dist/mapeo-manager.js").MapeoManagerEvents[U_5][];
|
|
25
|
-
rawListeners: <U_6 extends "local-peers">(type: U_6) => import("@comapeo/core/dist/mapeo-manager.js").MapeoManagerEvents[U_6][];
|
|
26
|
-
emit: <U_7 extends "local-peers">(event: U_7, ...args: Parameters<import("@comapeo/core/dist/mapeo-manager.js").MapeoManagerEvents[U_7]>) => boolean;
|
|
27
|
-
listenerCount: (type: "local-peers") => number;
|
|
28
|
-
eventNames: <U_8 extends "local-peers">() => U_8[];
|
|
29
|
-
readonly deviceId: () => Promise<string>;
|
|
30
|
-
createProject: ({ name, configPath }?: {
|
|
31
|
-
name?: string | undefined;
|
|
32
|
-
configPath?: string | undefined;
|
|
33
|
-
} | undefined) => Promise<string>;
|
|
34
|
-
listProjects: () => Promise<(Pick<{
|
|
35
|
-
schemaName: "projectSettings";
|
|
36
|
-
name?: string | undefined;
|
|
37
|
-
defaultPresets?: {
|
|
38
|
-
point: string[];
|
|
39
|
-
area: string[];
|
|
40
|
-
vertex: string[];
|
|
41
|
-
line: string[];
|
|
42
|
-
relation: string[];
|
|
43
|
-
} | undefined;
|
|
44
|
-
configMetadata?: {
|
|
45
|
-
name: string;
|
|
46
|
-
buildDate: string;
|
|
47
|
-
importDate: string;
|
|
48
|
-
fileVersion: string;
|
|
49
|
-
} | undefined;
|
|
50
|
-
}, "name"> & {
|
|
51
|
-
projectId: string;
|
|
52
|
-
createdAt?: string | undefined;
|
|
53
|
-
updatedAt?: string | undefined;
|
|
54
|
-
})[]>;
|
|
55
|
-
addProject: ({ projectKey, encryptionKeys, projectName }: Pick<import("@comapeo/core/dist/generated/rpc.js").ProjectJoinDetails, "projectKey" | "encryptionKeys"> & {
|
|
56
|
-
projectName: string;
|
|
57
|
-
}, { waitForSync }?: {
|
|
58
|
-
waitForSync?: boolean | undefined;
|
|
59
|
-
} | undefined) => Promise<string>;
|
|
60
|
-
setDeviceInfo: <T extends import("type-fest").Exact<import("@comapeo/core/dist/schema/client.js").DeviceInfoParam & {
|
|
61
|
-
deviceType?: "UNRECOGNIZED" | "device_type_unspecified" | "mobile" | "tablet" | "desktop" | "selfHostedServer" | undefined;
|
|
62
|
-
}, T>>(deviceInfo: T) => Promise<void>;
|
|
63
|
-
getDeviceInfo: () => Promise<{
|
|
64
|
-
deviceId: string;
|
|
65
|
-
deviceType: "UNRECOGNIZED" | "device_type_unspecified" | "mobile" | "tablet" | "desktop" | "selfHostedServer";
|
|
66
|
-
} & Partial<import("@comapeo/core/dist/schema/client.js").DeviceInfoParam>>;
|
|
67
|
-
setIsArchiveDevice: (isArchiveDevice: boolean) => Promise<void>;
|
|
68
|
-
getIsArchiveDevice: () => Promise<boolean>;
|
|
69
|
-
readonly invite: import("rpc-reflector/lib/types.js").ClientApi<import("@comapeo/core/dist/invite/invite-api.js").InviteApi> & (() => Promise<import("@comapeo/core/dist/invite/invite-api.js").InviteApi>);
|
|
70
|
-
startLocalPeerDiscoveryServer: () => Promise<{
|
|
71
|
-
name: string;
|
|
72
|
-
port: number;
|
|
73
|
-
}>;
|
|
74
|
-
stopLocalPeerDiscoveryServer: (opts?: {
|
|
75
|
-
force?: boolean | undefined;
|
|
76
|
-
timeout?: number | undefined;
|
|
77
|
-
} | undefined) => Promise<void>;
|
|
78
|
-
connectLocalPeer: (args_0: {
|
|
79
|
-
address: string;
|
|
80
|
-
port: number;
|
|
81
|
-
name: string;
|
|
82
|
-
}) => Promise<void>;
|
|
83
|
-
listLocalPeers: () => Promise<import("@comapeo/core/dist/mapeo-manager.js").PublicPeerInfo[]>;
|
|
84
|
-
onBackgrounded: () => Promise<void>;
|
|
85
|
-
onForegrounded: () => Promise<void>;
|
|
86
|
-
leaveProject: (projectPublicId: string) => Promise<void>;
|
|
87
|
-
getMapStyleJsonUrl: () => Promise<string>;
|
|
13
|
+
export type MapeoProjectApi = import("rpc-reflector/client.js").ClientApi<import("@comapeo/core/dist/mapeo-project.js").MapeoProject>;
|
|
14
|
+
export type MapeoClientApi = import("rpc-reflector/client.js").ClientApi<Omit<import("@comapeo/core").MapeoManager, "getProject"> & {
|
|
88
15
|
getProject: (projectPublicId: string) => Promise<MapeoProjectApi>;
|
|
89
|
-
}
|
|
16
|
+
}>;
|
|
17
|
+
import { createClient } from 'rpc-reflector/client.js';
|
package/dist/client.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createClient } from 'rpc-reflector';
|
|
1
|
+
import { createClient } from 'rpc-reflector/client.js';
|
|
2
2
|
import pDefer from 'p-defer';
|
|
3
3
|
import { MANAGER_CHANNEL_ID, MAPEO_RPC_ID, SubChannel, } from './lib/sub-channel.js';
|
|
4
4
|
/**
|
|
@@ -16,8 +16,7 @@ import { MANAGER_CHANNEL_ID, MAPEO_RPC_ID, SubChannel, } from './lib/sub-channel
|
|
|
16
16
|
const CLOSE = Symbol('close');
|
|
17
17
|
/**
|
|
18
18
|
* @param {import('./lib/sub-channel.js').MessagePortLike} messagePort
|
|
19
|
-
* @param {
|
|
20
|
-
* @param {number} [opts.timeout]
|
|
19
|
+
* @param {Parameters<typeof createClient>[1]} [opts]
|
|
21
20
|
*
|
|
22
21
|
* @returns {MapeoClientApi}
|
|
23
22
|
*/
|
|
@@ -62,7 +61,7 @@ export function createMapeoClient(messagePort, opts = {}) {
|
|
|
62
61
|
const existingClientPromise = projectClientPromises.get(projectPublicId);
|
|
63
62
|
if (existingClientPromise)
|
|
64
63
|
return existingClientPromise;
|
|
65
|
-
/** @type {import('p-defer').DeferredPromise<import('rpc-reflector/client.js').ClientApi<import('@comapeo/core/dist/mapeo-project.js').MapeoProject>>}*/
|
|
64
|
+
/** @type {import('p-defer').DeferredPromise<import('rpc-reflector/client.js').ClientApi<import('@comapeo/core/dist/mapeo-project.js').MapeoProject>>} */
|
|
66
65
|
const deferred = pDefer();
|
|
67
66
|
projectClientPromises.set(projectPublicId, deferred.promise);
|
|
68
67
|
try {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { createMapeoServer } from "./server.js";
|
|
2
|
-
export type MapeoClientApi = import(
|
|
3
|
-
export type MapeoProjectApi = import(
|
|
2
|
+
export type MapeoClientApi = import("./client.js").MapeoClientApi;
|
|
3
|
+
export type MapeoProjectApi = import("./client.js").MapeoProjectApi;
|
|
4
4
|
export { createMapeoClient, closeMapeoClient } from "./client.js";
|
package/dist/server.d.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @param {import('@comapeo/core').MapeoManager} manager
|
|
3
3
|
* @param {import('./lib/sub-channel.js').MessagePortLike} messagePort
|
|
4
|
+
* @param {Parameters<typeof createServer>[2]} [opts]
|
|
4
5
|
*/
|
|
5
|
-
export function createMapeoServer(manager: import(
|
|
6
|
+
export function createMapeoServer(manager: import("@comapeo/core").MapeoManager, messagePort: import("./lib/sub-channel.js").MessagePortLike, opts?: Parameters<typeof createServer>[2]): {
|
|
6
7
|
close(): void;
|
|
7
8
|
};
|
|
8
9
|
export class MapeoRpcApi {
|
|
9
10
|
/**
|
|
10
11
|
* @param {import('@comapeo/core').MapeoManager} manager
|
|
11
12
|
*/
|
|
12
|
-
constructor(manager: import(
|
|
13
|
+
constructor(manager: import("@comapeo/core").MapeoManager);
|
|
13
14
|
/**
|
|
14
15
|
* @param {string} projectId
|
|
15
16
|
* @returns {Promise<boolean>}
|
|
@@ -17,3 +18,4 @@ export class MapeoRpcApi {
|
|
|
17
18
|
assertProjectExists(projectId: string): Promise<boolean>;
|
|
18
19
|
#private;
|
|
19
20
|
}
|
|
21
|
+
import { createServer } from 'rpc-reflector/server.js';
|
package/dist/server.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { createServer } from 'rpc-reflector';
|
|
1
|
+
import { createServer } from 'rpc-reflector/server.js';
|
|
2
2
|
import { MANAGER_CHANNEL_ID, MAPEO_RPC_ID, SubChannel, } from './lib/sub-channel.js';
|
|
3
3
|
import { extractMessageEventData } from './lib/utils.js';
|
|
4
4
|
/**
|
|
5
5
|
* @param {import('@comapeo/core').MapeoManager} manager
|
|
6
6
|
* @param {import('./lib/sub-channel.js').MessagePortLike} messagePort
|
|
7
|
+
* @param {Parameters<typeof createServer>[2]} [opts]
|
|
7
8
|
*/
|
|
8
|
-
export function createMapeoServer(manager, messagePort) {
|
|
9
|
+
export function createMapeoServer(manager, messagePort, opts) {
|
|
9
10
|
/** @type {Map<string, { close: () => void }>} */
|
|
10
11
|
const existingProjectServers = new Map();
|
|
11
12
|
/** @type {Map<string, SubChannel>} */
|
|
@@ -13,8 +14,8 @@ export function createMapeoServer(manager, messagePort) {
|
|
|
13
14
|
const mapeoRpcApi = new MapeoRpcApi(manager);
|
|
14
15
|
const managerChannel = new SubChannel(messagePort, MANAGER_CHANNEL_ID);
|
|
15
16
|
const mapeoRpcChannel = new SubChannel(messagePort, MAPEO_RPC_ID);
|
|
16
|
-
const managerServer = createServer(manager, managerChannel);
|
|
17
|
-
const mapeoRpcServer = createServer(mapeoRpcApi, mapeoRpcChannel);
|
|
17
|
+
const managerServer = createServer(manager, managerChannel, opts);
|
|
18
|
+
const mapeoRpcServer = createServer(mapeoRpcApi, mapeoRpcChannel, opts);
|
|
18
19
|
managerChannel.start();
|
|
19
20
|
mapeoRpcChannel.start();
|
|
20
21
|
messagePort.addEventListener('message', handleMessage);
|
|
@@ -54,14 +55,14 @@ export function createMapeoServer(manager, messagePort) {
|
|
|
54
55
|
try {
|
|
55
56
|
project = await manager.getProject(id);
|
|
56
57
|
}
|
|
57
|
-
catch (
|
|
58
|
+
catch (_err) {
|
|
58
59
|
// TODO: how to respond to client so that method errors?
|
|
59
60
|
projectChannel.close();
|
|
60
61
|
existingProjectChannels.delete(id);
|
|
61
62
|
existingProjectServers.delete(id);
|
|
62
63
|
return;
|
|
63
64
|
}
|
|
64
|
-
const { close } = createServer(project, projectChannel);
|
|
65
|
+
const { close } = createServer(project, projectChannel, opts);
|
|
65
66
|
existingProjectServers.set(id, { close });
|
|
66
67
|
projectChannel.emit('message', data.message);
|
|
67
68
|
projectChannel.start();
|
package/package.json
CHANGED
|
@@ -1,24 +1,37 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@comapeo/ipc",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0-prerelease.0",
|
|
4
4
|
"description": "IPC wrappers for CoMapeo Core",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
},
|
|
13
|
+
"./client": {
|
|
14
|
+
"import": "./dist/client.js",
|
|
15
|
+
"types": "./dist/client.d.ts"
|
|
16
|
+
},
|
|
17
|
+
"./server": {
|
|
18
|
+
"import": "./dist/server.js",
|
|
19
|
+
"types": "./dist/server.d.ts"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
8
22
|
"engines": {
|
|
9
23
|
"node": ">=18.17.1"
|
|
10
24
|
},
|
|
11
25
|
"scripts": {
|
|
12
|
-
"format": "prettier **/*.{js,md} --write",
|
|
13
|
-
"lint": "eslint . --cache",
|
|
14
|
-
"types": "tsc -p tsconfig.json",
|
|
15
|
-
"test:unit": "node --test tests/*.js",
|
|
16
|
-
"test": "npm-run-all lint types test:unit",
|
|
17
26
|
"bench": "node bench/bench.js",
|
|
18
27
|
"build": "tsc -p tsconfig.npm.json",
|
|
28
|
+
"check:eslint": "eslint . --cache",
|
|
29
|
+
"check:format": "prettier --check --cache .",
|
|
30
|
+
"check:types": "tsc",
|
|
31
|
+
"check": "npm-run-all --parallel --continue-on-error --print-label --aggregate-output check:*",
|
|
19
32
|
"prepack": "npm run build",
|
|
20
|
-
"prepare": "husky
|
|
21
|
-
"
|
|
33
|
+
"prepare": "husky",
|
|
34
|
+
"test": "node --test tests/*.js"
|
|
22
35
|
},
|
|
23
36
|
"files": [
|
|
24
37
|
"dist"
|
|
@@ -41,46 +54,28 @@
|
|
|
41
54
|
"homepage": "https://github.com/digidem/comapeo-ipc#readme",
|
|
42
55
|
"dependencies": {
|
|
43
56
|
"eventemitter3": "^5.0.1",
|
|
44
|
-
"p-defer": "^4.0.
|
|
45
|
-
"rpc-reflector": "^
|
|
57
|
+
"p-defer": "^4.0.1",
|
|
58
|
+
"rpc-reflector": "^3.0.0-prerelease.0"
|
|
46
59
|
},
|
|
47
60
|
"peerDependencies": {
|
|
48
|
-
"@comapeo/core": "^
|
|
61
|
+
"@comapeo/core": "^4.0.0"
|
|
49
62
|
},
|
|
50
63
|
"devDependencies": {
|
|
51
|
-
"@comapeo/core": "
|
|
64
|
+
"@comapeo/core": "4.0.0",
|
|
52
65
|
"@digidem/types": "^2.1.0",
|
|
66
|
+
"@eslint/js": "^9.29.0",
|
|
53
67
|
"@mapeo/crypto": "^1.0.0-alpha.8",
|
|
54
68
|
"@types/nanobench": "^3.0.0",
|
|
55
|
-
"@types/node": "^20.
|
|
56
|
-
"eslint": "^
|
|
57
|
-
"fastify": "^4.
|
|
58
|
-
"
|
|
59
|
-
"
|
|
69
|
+
"@types/node": "^20.19.1",
|
|
70
|
+
"eslint": "^9.29.0",
|
|
71
|
+
"fastify": "^4.29.1",
|
|
72
|
+
"globals": "^16.2.0",
|
|
73
|
+
"husky": "^9.1.7",
|
|
74
|
+
"lint-staged": "^15.5.2",
|
|
60
75
|
"nanobench": "^3.0.0",
|
|
61
|
-
"npm-run-
|
|
62
|
-
"prettier": "^3.
|
|
63
|
-
"random-access-memory": "^6.2.
|
|
64
|
-
"
|
|
65
|
-
"typescript": "^5.2.2"
|
|
66
|
-
},
|
|
67
|
-
"prettier": {
|
|
68
|
-
"semi": false,
|
|
69
|
-
"singleQuote": true
|
|
70
|
-
},
|
|
71
|
-
"eslintConfig": {
|
|
72
|
-
"env": {
|
|
73
|
-
"commonjs": true,
|
|
74
|
-
"es2021": true,
|
|
75
|
-
"node": true
|
|
76
|
-
},
|
|
77
|
-
"extends": "eslint:recommended",
|
|
78
|
-
"parserOptions": {
|
|
79
|
-
"ecmaVersion": "latest",
|
|
80
|
-
"sourceType": "module"
|
|
81
|
-
}
|
|
82
|
-
},
|
|
83
|
-
"lint-staged": {
|
|
84
|
-
"*.{js,md}": "prettier . --write"
|
|
76
|
+
"npm-run-all2": "^7.0.2",
|
|
77
|
+
"prettier": "^3.5.3",
|
|
78
|
+
"random-access-memory": "^6.2.1",
|
|
79
|
+
"typescript": "5.8.3"
|
|
85
80
|
}
|
|
86
81
|
}
|