@comapeo/core-react 4.0.0 → 4.1.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.
@@ -268,7 +268,7 @@ export declare function useDocumentCreatedBy({ projectId, originalVersionId, }:
268
268
  export declare function useOwnRoleInProject({ projectId }: {
269
269
  projectId: string;
270
270
  }): {
271
- data: import("@comapeo/core/dist/roles.js", { with: { "resolution-mode": "import" } }).Role<"a12a6702b93bd7ff" | "f7c150f5a3a9a855" | "012fd2d431c0bf60" | "9e6d29263cba36c9" | "8ced989b1904606b" | "08e4251e36f6e7ed">;
271
+ data: import("@comapeo/core/dist/roles.js", { with: { "resolution-mode": "import" } }).Role<"a12a6702b93bd7ff" | "f7c150f5a3a9a855" | "012fd2d431c0bf60" | "9e6d29263cba36c9" | "8ced989b1904606b" | "a24eaca65ab5d5d0" | "08e4251e36f6e7ed">;
272
272
  error: Error | null;
273
273
  isRefetching: boolean;
274
274
  };
@@ -299,6 +299,33 @@ export declare function useAddServerPeer({ projectId }: {
299
299
  reset: () => void;
300
300
  status: "pending" | "success" | "idle";
301
301
  };
302
+ export declare function useRemoveServerPeer({ projectId }: {
303
+ projectId: string;
304
+ }): {
305
+ error: Error;
306
+ mutate: import("@tanstack/react-query").UseMutateFunction<void, Error, {
307
+ serverDeviceId: string;
308
+ dangerouslyAllowInsecureConnections?: boolean;
309
+ }, unknown>;
310
+ mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<void, Error, {
311
+ serverDeviceId: string;
312
+ dangerouslyAllowInsecureConnections?: boolean;
313
+ }, unknown>;
314
+ reset: () => void;
315
+ status: "error";
316
+ } | {
317
+ error: null;
318
+ mutate: import("@tanstack/react-query").UseMutateFunction<void, Error, {
319
+ serverDeviceId: string;
320
+ dangerouslyAllowInsecureConnections?: boolean;
321
+ }, unknown>;
322
+ mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<void, Error, {
323
+ serverDeviceId: string;
324
+ dangerouslyAllowInsecureConnections?: boolean;
325
+ }, unknown>;
326
+ reset: () => void;
327
+ status: "pending" | "success" | "idle";
328
+ };
302
329
  /**
303
330
  * Create a new project.
304
331
  */
@@ -10,6 +10,7 @@ exports.useAttachmentUrl = useAttachmentUrl;
10
10
  exports.useDocumentCreatedBy = useDocumentCreatedBy;
11
11
  exports.useOwnRoleInProject = useOwnRoleInProject;
12
12
  exports.useAddServerPeer = useAddServerPeer;
13
+ exports.useRemoveServerPeer = useRemoveServerPeer;
13
14
  exports.useCreateProject = useCreateProject;
14
15
  exports.useLeaveProject = useLeaveProject;
15
16
  exports.useImportProjectConfig = useImportProjectConfig;
@@ -297,6 +298,14 @@ function useAddServerPeer({ projectId }) {
297
298
  ? { error, mutate, mutateAsync, reset, status }
298
299
  : { error: null, mutate, mutateAsync, reset, status };
299
300
  }
301
+ function useRemoveServerPeer({ projectId }) {
302
+ const queryClient = (0, react_query_1.useQueryClient)();
303
+ const { data: projectApi } = useSingleProject({ projectId });
304
+ const { error, mutate, mutateAsync, reset, status } = (0, react_query_1.useMutation)((0, projects_js_1.removeServerPeerMutationOptions)({ projectApi, projectId, queryClient }));
305
+ return status === 'error'
306
+ ? { error, mutate, mutateAsync, reset, status }
307
+ : { error: null, mutate, mutateAsync, reset, status };
308
+ }
300
309
  /**
301
310
  * Create a new project.
302
311
  */
@@ -3,6 +3,6 @@ export { useClientApi, useIsArchiveDevice, useOwnDeviceInfo, useSetIsArchiveDevi
3
3
  export { useCreateDocument, useDeleteDocument, useManyDocs, useSingleDocByDocId, useSingleDocByVersionId, useUpdateDocument, } from './hooks/documents.js';
4
4
  export { useAcceptInvite, useSetUpInvitesListeners, useManyInvites, useRejectInvite, useRequestCancelInvite, useSendInvite, useSingleInvite, } from './hooks/invites.js';
5
5
  export { useMapStyleUrl } from './hooks/maps.js';
6
- export { useAddServerPeer, useAttachmentUrl, useCreateBlob, useCreateProject, useDataSyncProgress, useDocumentCreatedBy, useIconUrl, useImportProjectConfig, useLeaveProject, useManyMembers, useManyProjects, useOwnRoleInProject, useProjectSettings, useSingleMember, useSingleProject, useStartSync, useStopSync, useSyncState, useUpdateProjectSettings, } from './hooks/projects.js';
6
+ export { useAddServerPeer, useAttachmentUrl, useCreateBlob, useCreateProject, useDataSyncProgress, useDocumentCreatedBy, useIconUrl, useImportProjectConfig, useLeaveProject, useManyMembers, useManyProjects, useOwnRoleInProject, useProjectSettings, useRemoveServerPeer, useSingleMember, useSingleProject, useStartSync, useStopSync, useSyncState, useUpdateProjectSettings, } from './hooks/projects.js';
7
7
  export { type SyncState } from './lib/sync.js';
8
8
  export { type WriteableDocument, type WriteableDocumentType, type WriteableValue, } from './lib/types.js';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useUpdateProjectSettings = exports.useSyncState = exports.useStopSync = exports.useStartSync = exports.useSingleProject = exports.useSingleMember = exports.useProjectSettings = exports.useOwnRoleInProject = exports.useManyProjects = exports.useManyMembers = exports.useLeaveProject = exports.useImportProjectConfig = exports.useIconUrl = exports.useDocumentCreatedBy = exports.useDataSyncProgress = exports.useCreateProject = exports.useCreateBlob = exports.useAttachmentUrl = exports.useAddServerPeer = exports.useMapStyleUrl = exports.useSingleInvite = exports.useSendInvite = exports.useRequestCancelInvite = exports.useRejectInvite = exports.useManyInvites = exports.useSetUpInvitesListeners = exports.useAcceptInvite = exports.useUpdateDocument = exports.useSingleDocByVersionId = exports.useSingleDocByDocId = exports.useManyDocs = exports.useDeleteDocument = exports.useCreateDocument = exports.useSetOwnDeviceInfo = exports.useSetIsArchiveDevice = exports.useOwnDeviceInfo = exports.useIsArchiveDevice = exports.useClientApi = exports.ClientApiProvider = exports.ClientApiContext = void 0;
3
+ exports.useUpdateProjectSettings = exports.useSyncState = exports.useStopSync = exports.useStartSync = exports.useSingleProject = exports.useSingleMember = exports.useRemoveServerPeer = exports.useProjectSettings = exports.useOwnRoleInProject = exports.useManyProjects = exports.useManyMembers = exports.useLeaveProject = exports.useImportProjectConfig = exports.useIconUrl = exports.useDocumentCreatedBy = exports.useDataSyncProgress = exports.useCreateProject = exports.useCreateBlob = exports.useAttachmentUrl = exports.useAddServerPeer = exports.useMapStyleUrl = exports.useSingleInvite = exports.useSendInvite = exports.useRequestCancelInvite = exports.useRejectInvite = exports.useManyInvites = exports.useSetUpInvitesListeners = exports.useAcceptInvite = exports.useUpdateDocument = exports.useSingleDocByVersionId = exports.useSingleDocByDocId = exports.useManyDocs = exports.useDeleteDocument = exports.useCreateDocument = exports.useSetOwnDeviceInfo = exports.useSetIsArchiveDevice = exports.useOwnDeviceInfo = exports.useIsArchiveDevice = exports.useClientApi = exports.ClientApiProvider = exports.ClientApiContext = void 0;
4
4
  var ClientApi_js_1 = require("./contexts/ClientApi.js");
5
5
  Object.defineProperty(exports, "ClientApiContext", { enumerable: true, get: function () { return ClientApi_js_1.ClientApiContext; } });
6
6
  Object.defineProperty(exports, "ClientApiProvider", { enumerable: true, get: function () { return ClientApi_js_1.ClientApiProvider; } });
@@ -41,6 +41,7 @@ Object.defineProperty(exports, "useManyMembers", { enumerable: true, get: functi
41
41
  Object.defineProperty(exports, "useManyProjects", { enumerable: true, get: function () { return projects_js_1.useManyProjects; } });
42
42
  Object.defineProperty(exports, "useOwnRoleInProject", { enumerable: true, get: function () { return projects_js_1.useOwnRoleInProject; } });
43
43
  Object.defineProperty(exports, "useProjectSettings", { enumerable: true, get: function () { return projects_js_1.useProjectSettings; } });
44
+ Object.defineProperty(exports, "useRemoveServerPeer", { enumerable: true, get: function () { return projects_js_1.useRemoveServerPeer; } });
44
45
  Object.defineProperty(exports, "useSingleMember", { enumerable: true, get: function () { return projects_js_1.useSingleMember; } });
45
46
  Object.defineProperty(exports, "useSingleProject", { enumerable: true, get: function () { return projects_js_1.useSingleProject; } });
46
47
  Object.defineProperty(exports, "useStartSync", { enumerable: true, get: function () { return projects_js_1.useStartSync; } });
@@ -181,11 +181,11 @@ export declare function projectMemberByIdQueryOptions({ projectApi, projectId, d
181
181
  export declare function projectOwnRoleQueryOptions({ projectApi, projectId, }: {
182
182
  projectApi: MapeoProjectApi;
183
183
  projectId: string;
184
- }): import("@tanstack/react-query").OmitKeyof<import("@tanstack/react-query").UseQueryOptions<import("@comapeo/core/dist/roles.js", { with: { "resolution-mode": "import" } }).Role<"a12a6702b93bd7ff" | "f7c150f5a3a9a855" | "012fd2d431c0bf60" | "9e6d29263cba36c9" | "8ced989b1904606b" | "08e4251e36f6e7ed">, Error, import("@comapeo/core/dist/roles.js", { with: { "resolution-mode": "import" } }).Role<"a12a6702b93bd7ff" | "f7c150f5a3a9a855" | "012fd2d431c0bf60" | "9e6d29263cba36c9" | "8ced989b1904606b" | "08e4251e36f6e7ed">, readonly ["@comapeo/core-react", "projects", string, "role"]>, "queryFn"> & {
185
- queryFn?: import("@tanstack/react-query").QueryFunction<import("@comapeo/core/dist/roles.js", { with: { "resolution-mode": "import" } }).Role<"a12a6702b93bd7ff" | "f7c150f5a3a9a855" | "012fd2d431c0bf60" | "9e6d29263cba36c9" | "8ced989b1904606b" | "08e4251e36f6e7ed">, readonly ["@comapeo/core-react", "projects", string, "role"], never> | undefined;
184
+ }): import("@tanstack/react-query").OmitKeyof<import("@tanstack/react-query").UseQueryOptions<import("@comapeo/core/dist/roles.js", { with: { "resolution-mode": "import" } }).Role<"a12a6702b93bd7ff" | "f7c150f5a3a9a855" | "012fd2d431c0bf60" | "9e6d29263cba36c9" | "8ced989b1904606b" | "a24eaca65ab5d5d0" | "08e4251e36f6e7ed">, Error, import("@comapeo/core/dist/roles.js", { with: { "resolution-mode": "import" } }).Role<"a12a6702b93bd7ff" | "f7c150f5a3a9a855" | "012fd2d431c0bf60" | "9e6d29263cba36c9" | "8ced989b1904606b" | "a24eaca65ab5d5d0" | "08e4251e36f6e7ed">, readonly ["@comapeo/core-react", "projects", string, "role"]>, "queryFn"> & {
185
+ queryFn?: import("@tanstack/react-query").QueryFunction<import("@comapeo/core/dist/roles.js", { with: { "resolution-mode": "import" } }).Role<"a12a6702b93bd7ff" | "f7c150f5a3a9a855" | "012fd2d431c0bf60" | "9e6d29263cba36c9" | "8ced989b1904606b" | "a24eaca65ab5d5d0" | "08e4251e36f6e7ed">, readonly ["@comapeo/core-react", "projects", string, "role"], never> | undefined;
186
186
  } & {
187
187
  queryKey: readonly ["@comapeo/core-react", "projects", string, "role"] & {
188
- [dataTagSymbol]: import("@comapeo/core/dist/roles.js", { with: { "resolution-mode": "import" } }).Role<"a12a6702b93bd7ff" | "f7c150f5a3a9a855" | "012fd2d431c0bf60" | "9e6d29263cba36c9" | "8ced989b1904606b" | "08e4251e36f6e7ed">;
188
+ [dataTagSymbol]: import("@comapeo/core/dist/roles.js", { with: { "resolution-mode": "import" } }).Role<"a12a6702b93bd7ff" | "f7c150f5a3a9a855" | "012fd2d431c0bf60" | "9e6d29263cba36c9" | "8ced989b1904606b" | "a24eaca65ab5d5d0" | "08e4251e36f6e7ed">;
189
189
  [dataTagErrorSymbol]: Error;
190
190
  };
191
191
  };
@@ -265,6 +265,19 @@ export declare function addServerPeerMutationOptions({ projectApi, projectId, qu
265
265
  networkMode: "always";
266
266
  retry: false;
267
267
  };
268
+ export declare function removeServerPeerMutationOptions({ projectApi, projectId, queryClient, }: {
269
+ projectApi: MapeoProjectApi;
270
+ projectId: string;
271
+ queryClient: QueryClient;
272
+ }): {
273
+ mutationFn: ({ serverDeviceId, dangerouslyAllowInsecureConnections, }: {
274
+ serverDeviceId: string;
275
+ dangerouslyAllowInsecureConnections?: boolean;
276
+ }) => Promise<void>;
277
+ onSuccess: () => void;
278
+ networkMode: "always";
279
+ retry: false;
280
+ };
268
281
  export declare function createProjectMutationOptions({ clientApi, queryClient, }: {
269
282
  clientApi: MapeoClientApi;
270
283
  queryClient: QueryClient;
@@ -19,6 +19,7 @@ exports.iconUrlQueryOptions = iconUrlQueryOptions;
19
19
  exports.documentCreatedByQueryOptions = documentCreatedByQueryOptions;
20
20
  exports.attachmentUrlQueryOptions = attachmentUrlQueryOptions;
21
21
  exports.addServerPeerMutationOptions = addServerPeerMutationOptions;
22
+ exports.removeServerPeerMutationOptions = removeServerPeerMutationOptions;
22
23
  exports.createProjectMutationOptions = createProjectMutationOptions;
23
24
  exports.leaveProjectMutationOptions = leaveProjectMutationOptions;
24
25
  exports.importProjectConfigMutationOptions = importProjectConfigMutationOptions;
@@ -168,6 +169,21 @@ function addServerPeerMutationOptions({ projectApi, projectId, queryClient, }) {
168
169
  },
169
170
  };
170
171
  }
172
+ function removeServerPeerMutationOptions({ projectApi, projectId, queryClient, }) {
173
+ return {
174
+ ...(0, shared_js_1.baseMutationOptions)(),
175
+ mutationFn: async ({ serverDeviceId, dangerouslyAllowInsecureConnections, }) => {
176
+ return projectApi.$member.removeServerPeer(serverDeviceId, {
177
+ dangerouslyAllowInsecureConnections,
178
+ });
179
+ },
180
+ onSuccess: () => {
181
+ queryClient.invalidateQueries({
182
+ queryKey: getMembersQueryKey({ projectId }),
183
+ });
184
+ },
185
+ };
186
+ }
171
187
  function createProjectMutationOptions({ clientApi, queryClient, }) {
172
188
  return {
173
189
  ...(0, shared_js_1.baseMutationOptions)(),
@@ -268,7 +268,7 @@ export declare function useDocumentCreatedBy({ projectId, originalVersionId, }:
268
268
  export declare function useOwnRoleInProject({ projectId }: {
269
269
  projectId: string;
270
270
  }): {
271
- data: import("@comapeo/core/dist/roles.js").Role<"a12a6702b93bd7ff" | "f7c150f5a3a9a855" | "012fd2d431c0bf60" | "9e6d29263cba36c9" | "8ced989b1904606b" | "08e4251e36f6e7ed">;
271
+ data: import("@comapeo/core/dist/roles.js").Role<"a12a6702b93bd7ff" | "f7c150f5a3a9a855" | "012fd2d431c0bf60" | "9e6d29263cba36c9" | "8ced989b1904606b" | "a24eaca65ab5d5d0" | "08e4251e36f6e7ed">;
272
272
  error: Error | null;
273
273
  isRefetching: boolean;
274
274
  };
@@ -299,6 +299,33 @@ export declare function useAddServerPeer({ projectId }: {
299
299
  reset: () => void;
300
300
  status: "pending" | "success" | "idle";
301
301
  };
302
+ export declare function useRemoveServerPeer({ projectId }: {
303
+ projectId: string;
304
+ }): {
305
+ error: Error;
306
+ mutate: import("@tanstack/react-query").UseMutateFunction<void, Error, {
307
+ serverDeviceId: string;
308
+ dangerouslyAllowInsecureConnections?: boolean;
309
+ }, unknown>;
310
+ mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<void, Error, {
311
+ serverDeviceId: string;
312
+ dangerouslyAllowInsecureConnections?: boolean;
313
+ }, unknown>;
314
+ reset: () => void;
315
+ status: "error";
316
+ } | {
317
+ error: null;
318
+ mutate: import("@tanstack/react-query").UseMutateFunction<void, Error, {
319
+ serverDeviceId: string;
320
+ dangerouslyAllowInsecureConnections?: boolean;
321
+ }, unknown>;
322
+ mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<void, Error, {
323
+ serverDeviceId: string;
324
+ dangerouslyAllowInsecureConnections?: boolean;
325
+ }, unknown>;
326
+ reset: () => void;
327
+ status: "pending" | "success" | "idle";
328
+ };
302
329
  /**
303
330
  * Create a new project.
304
331
  */
@@ -1,6 +1,6 @@
1
1
  import { useMutation, useQueryClient, useSuspenseQuery, } from '@tanstack/react-query';
2
2
  import { useSyncExternalStore } from 'react';
3
- import { addServerPeerMutationOptions, attachmentUrlQueryOptions, createBlobMutationOptions, createProjectMutationOptions, documentCreatedByQueryOptions, iconUrlQueryOptions, importProjectConfigMutationOptions, leaveProjectMutationOptions, projectByIdQueryOptions, projectMemberByIdQueryOptions, projectMembersQueryOptions, projectOwnRoleQueryOptions, projectSettingsQueryOptions, projectsQueryOptions, startSyncMutationOptions, stopSyncMutationOptions, updateProjectSettingsMutationOptions, } from '../lib/react-query/projects.js';
3
+ import { addServerPeerMutationOptions, attachmentUrlQueryOptions, createBlobMutationOptions, createProjectMutationOptions, documentCreatedByQueryOptions, iconUrlQueryOptions, importProjectConfigMutationOptions, leaveProjectMutationOptions, projectByIdQueryOptions, projectMemberByIdQueryOptions, projectMembersQueryOptions, projectOwnRoleQueryOptions, projectSettingsQueryOptions, projectsQueryOptions, removeServerPeerMutationOptions, startSyncMutationOptions, stopSyncMutationOptions, updateProjectSettingsMutationOptions, } from '../lib/react-query/projects.js';
4
4
  import { SyncStore } from '../lib/sync.js';
5
5
  import { useClientApi } from './client.js';
6
6
  /**
@@ -276,6 +276,14 @@ export function useAddServerPeer({ projectId }) {
276
276
  ? { error, mutate, mutateAsync, reset, status }
277
277
  : { error: null, mutate, mutateAsync, reset, status };
278
278
  }
279
+ export function useRemoveServerPeer({ projectId }) {
280
+ const queryClient = useQueryClient();
281
+ const { data: projectApi } = useSingleProject({ projectId });
282
+ const { error, mutate, mutateAsync, reset, status } = useMutation(removeServerPeerMutationOptions({ projectApi, projectId, queryClient }));
283
+ return status === 'error'
284
+ ? { error, mutate, mutateAsync, reset, status }
285
+ : { error: null, mutate, mutateAsync, reset, status };
286
+ }
279
287
  /**
280
288
  * Create a new project.
281
289
  */
@@ -3,6 +3,6 @@ export { useClientApi, useIsArchiveDevice, useOwnDeviceInfo, useSetIsArchiveDevi
3
3
  export { useCreateDocument, useDeleteDocument, useManyDocs, useSingleDocByDocId, useSingleDocByVersionId, useUpdateDocument, } from './hooks/documents.js';
4
4
  export { useAcceptInvite, useSetUpInvitesListeners, useManyInvites, useRejectInvite, useRequestCancelInvite, useSendInvite, useSingleInvite, } from './hooks/invites.js';
5
5
  export { useMapStyleUrl } from './hooks/maps.js';
6
- export { useAddServerPeer, useAttachmentUrl, useCreateBlob, useCreateProject, useDataSyncProgress, useDocumentCreatedBy, useIconUrl, useImportProjectConfig, useLeaveProject, useManyMembers, useManyProjects, useOwnRoleInProject, useProjectSettings, useSingleMember, useSingleProject, useStartSync, useStopSync, useSyncState, useUpdateProjectSettings, } from './hooks/projects.js';
6
+ export { useAddServerPeer, useAttachmentUrl, useCreateBlob, useCreateProject, useDataSyncProgress, useDocumentCreatedBy, useIconUrl, useImportProjectConfig, useLeaveProject, useManyMembers, useManyProjects, useOwnRoleInProject, useProjectSettings, useRemoveServerPeer, useSingleMember, useSingleProject, useStartSync, useStopSync, useSyncState, useUpdateProjectSettings, } from './hooks/projects.js';
7
7
  export { type SyncState } from './lib/sync.js';
8
8
  export { type WriteableDocument, type WriteableDocumentType, type WriteableValue, } from './lib/types.js';
package/dist/esm/index.js CHANGED
@@ -3,4 +3,4 @@ export { useClientApi, useIsArchiveDevice, useOwnDeviceInfo, useSetIsArchiveDevi
3
3
  export { useCreateDocument, useDeleteDocument, useManyDocs, useSingleDocByDocId, useSingleDocByVersionId, useUpdateDocument, } from './hooks/documents.js';
4
4
  export { useAcceptInvite, useSetUpInvitesListeners, useManyInvites, useRejectInvite, useRequestCancelInvite, useSendInvite, useSingleInvite, } from './hooks/invites.js';
5
5
  export { useMapStyleUrl } from './hooks/maps.js';
6
- export { useAddServerPeer, useAttachmentUrl, useCreateBlob, useCreateProject, useDataSyncProgress, useDocumentCreatedBy, useIconUrl, useImportProjectConfig, useLeaveProject, useManyMembers, useManyProjects, useOwnRoleInProject, useProjectSettings, useSingleMember, useSingleProject, useStartSync, useStopSync, useSyncState, useUpdateProjectSettings, } from './hooks/projects.js';
6
+ export { useAddServerPeer, useAttachmentUrl, useCreateBlob, useCreateProject, useDataSyncProgress, useDocumentCreatedBy, useIconUrl, useImportProjectConfig, useLeaveProject, useManyMembers, useManyProjects, useOwnRoleInProject, useProjectSettings, useRemoveServerPeer, useSingleMember, useSingleProject, useStartSync, useStopSync, useSyncState, useUpdateProjectSettings, } from './hooks/projects.js';
@@ -181,11 +181,11 @@ export declare function projectMemberByIdQueryOptions({ projectApi, projectId, d
181
181
  export declare function projectOwnRoleQueryOptions({ projectApi, projectId, }: {
182
182
  projectApi: MapeoProjectApi;
183
183
  projectId: string;
184
- }): import("@tanstack/react-query").OmitKeyof<import("@tanstack/react-query").UseQueryOptions<import("@comapeo/core/dist/roles.js").Role<"a12a6702b93bd7ff" | "f7c150f5a3a9a855" | "012fd2d431c0bf60" | "9e6d29263cba36c9" | "8ced989b1904606b" | "08e4251e36f6e7ed">, Error, import("@comapeo/core/dist/roles.js").Role<"a12a6702b93bd7ff" | "f7c150f5a3a9a855" | "012fd2d431c0bf60" | "9e6d29263cba36c9" | "8ced989b1904606b" | "08e4251e36f6e7ed">, readonly ["@comapeo/core-react", "projects", string, "role"]>, "queryFn"> & {
185
- queryFn?: import("@tanstack/react-query").QueryFunction<import("@comapeo/core/dist/roles.js").Role<"a12a6702b93bd7ff" | "f7c150f5a3a9a855" | "012fd2d431c0bf60" | "9e6d29263cba36c9" | "8ced989b1904606b" | "08e4251e36f6e7ed">, readonly ["@comapeo/core-react", "projects", string, "role"], never> | undefined;
184
+ }): import("@tanstack/react-query").OmitKeyof<import("@tanstack/react-query").UseQueryOptions<import("@comapeo/core/dist/roles.js").Role<"a12a6702b93bd7ff" | "f7c150f5a3a9a855" | "012fd2d431c0bf60" | "9e6d29263cba36c9" | "8ced989b1904606b" | "a24eaca65ab5d5d0" | "08e4251e36f6e7ed">, Error, import("@comapeo/core/dist/roles.js").Role<"a12a6702b93bd7ff" | "f7c150f5a3a9a855" | "012fd2d431c0bf60" | "9e6d29263cba36c9" | "8ced989b1904606b" | "a24eaca65ab5d5d0" | "08e4251e36f6e7ed">, readonly ["@comapeo/core-react", "projects", string, "role"]>, "queryFn"> & {
185
+ queryFn?: import("@tanstack/react-query").QueryFunction<import("@comapeo/core/dist/roles.js").Role<"a12a6702b93bd7ff" | "f7c150f5a3a9a855" | "012fd2d431c0bf60" | "9e6d29263cba36c9" | "8ced989b1904606b" | "a24eaca65ab5d5d0" | "08e4251e36f6e7ed">, readonly ["@comapeo/core-react", "projects", string, "role"], never> | undefined;
186
186
  } & {
187
187
  queryKey: readonly ["@comapeo/core-react", "projects", string, "role"] & {
188
- [dataTagSymbol]: import("@comapeo/core/dist/roles.js").Role<"a12a6702b93bd7ff" | "f7c150f5a3a9a855" | "012fd2d431c0bf60" | "9e6d29263cba36c9" | "8ced989b1904606b" | "08e4251e36f6e7ed">;
188
+ [dataTagSymbol]: import("@comapeo/core/dist/roles.js").Role<"a12a6702b93bd7ff" | "f7c150f5a3a9a855" | "012fd2d431c0bf60" | "9e6d29263cba36c9" | "8ced989b1904606b" | "a24eaca65ab5d5d0" | "08e4251e36f6e7ed">;
189
189
  [dataTagErrorSymbol]: Error;
190
190
  };
191
191
  };
@@ -265,6 +265,19 @@ export declare function addServerPeerMutationOptions({ projectApi, projectId, qu
265
265
  networkMode: "always";
266
266
  retry: false;
267
267
  };
268
+ export declare function removeServerPeerMutationOptions({ projectApi, projectId, queryClient, }: {
269
+ projectApi: MapeoProjectApi;
270
+ projectId: string;
271
+ queryClient: QueryClient;
272
+ }): {
273
+ mutationFn: ({ serverDeviceId, dangerouslyAllowInsecureConnections, }: {
274
+ serverDeviceId: string;
275
+ dangerouslyAllowInsecureConnections?: boolean;
276
+ }) => Promise<void>;
277
+ onSuccess: () => void;
278
+ networkMode: "always";
279
+ retry: false;
280
+ };
268
281
  export declare function createProjectMutationOptions({ clientApi, queryClient, }: {
269
282
  clientApi: MapeoClientApi;
270
283
  queryClient: QueryClient;
@@ -140,6 +140,21 @@ export function addServerPeerMutationOptions({ projectApi, projectId, queryClien
140
140
  },
141
141
  };
142
142
  }
143
+ export function removeServerPeerMutationOptions({ projectApi, projectId, queryClient, }) {
144
+ return {
145
+ ...baseMutationOptions(),
146
+ mutationFn: async ({ serverDeviceId, dangerouslyAllowInsecureConnections, }) => {
147
+ return projectApi.$member.removeServerPeer(serverDeviceId, {
148
+ dangerouslyAllowInsecureConnections,
149
+ });
150
+ },
151
+ onSuccess: () => {
152
+ queryClient.invalidateQueries({
153
+ queryKey: getMembersQueryKey({ projectId }),
154
+ });
155
+ },
156
+ };
157
+ }
143
158
  export function createProjectMutationOptions({ clientApi, queryClient, }) {
144
159
  return {
145
160
  ...baseMutationOptions(),
package/docs/API.md CHANGED
@@ -16,6 +16,7 @@
16
16
  - [useDocumentCreatedBy](#usedocumentcreatedby)
17
17
  - [useOwnRoleInProject](#useownroleinproject)
18
18
  - [useAddServerPeer](#useaddserverpeer)
19
+ - [useRemoveServerPeer](#useremoveserverpeer)
19
20
  - [useCreateProject](#usecreateproject)
20
21
  - [useLeaveProject](#useleaveproject)
21
22
  - [useImportProjectConfig](#useimportprojectconfig)
@@ -388,7 +389,7 @@ This is a more convenient alternative to using the `useOwnDeviceInfo` and `useMa
388
389
 
389
390
  | Function | Type |
390
391
  | ---------- | ---------- |
391
- | `useOwnRoleInProject` | `({ projectId }: { projectId: string; }) => { data: Role<"a12a6702b93bd7ff" or "f7c150f5a3a9a855" or "012fd2d431c0bf60" or "9e6d29263cba36c9" or "8ced989b1904606b" or "08e4251e36f6e7ed">; error: Error or null; isRefetching: boolean; }` |
392
+ | `useOwnRoleInProject` | `({ projectId }: { projectId: string; }) => { data: Role<"a12a6702b93bd7ff" or "f7c150f5a3a9a855" or "012fd2d431c0bf60" or "9e6d29263cba36c9" or "8ced989b1904606b" or "a24eaca65ab5d5d0" or "08e4251e36f6e7ed">; error: Error or null; isRefetching: boolean; }` |
392
393
 
393
394
  Parameters:
394
395
 
@@ -412,6 +413,12 @@ function BasicExample() {
412
413
  | ---------- | ---------- |
413
414
  | `useAddServerPeer` | `({ projectId }: { projectId: string; }) => { error: Error; mutate: UseMutateFunction<void, Error, { baseUrl: string; dangerouslyAllowInsecureConnections?: boolean or undefined; }, unknown>; mutateAsync: UseMutateAsyncFunction<...>; reset: () => void; status: "error"; } or { ...; }` |
414
415
 
416
+ ### useRemoveServerPeer
417
+
418
+ | Function | Type |
419
+ | ---------- | ---------- |
420
+ | `useRemoveServerPeer` | `({ projectId }: { projectId: string; }) => { error: Error; mutate: UseMutateFunction<void, Error, { serverDeviceId: string; dangerouslyAllowInsecureConnections?: boolean or undefined; }, unknown>; mutateAsync: UseMutateAsyncFunction<...>; reset: () => void; status: "error"; } or { ...; }` |
421
+
415
422
  ### useCreateProject
416
423
 
417
424
  Create a new project.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@comapeo/core-react",
3
- "version": "4.0.0",
3
+ "version": "4.1.0",
4
4
  "description": "React wrapper for working with @comapeo/core",
5
5
  "repository": {
6
6
  "type": "git",
@@ -57,41 +57,44 @@
57
57
  "types": "tsc"
58
58
  },
59
59
  "peerDependencies": {
60
- "@comapeo/core": "^3.0.0",
60
+ "@comapeo/core": "^3.1.0",
61
61
  "@comapeo/ipc": "^3.0.0",
62
62
  "@comapeo/schema": "*",
63
63
  "@tanstack/react-query": "^5",
64
64
  "react": "^18 || ^19"
65
65
  },
66
66
  "devDependencies": {
67
- "@comapeo/core": "3.0.0",
67
+ "@comapeo/core": "3.1.1",
68
68
  "@comapeo/ipc": "3.0.0",
69
- "@comapeo/schema": "1.4.1",
70
- "@eslint/compat": "1.2.7",
71
- "@eslint/js": "9.23.0",
69
+ "@comapeo/schema": "1.5.0",
70
+ "@eslint/compat": "1.2.9",
71
+ "@eslint/js": "9.26.0",
72
72
  "@ianvs/prettier-plugin-sort-imports": "4.4.1",
73
73
  "@mapeo/crypto": "1.0.0-alpha.10",
74
- "@tanstack/eslint-plugin-query": "5.68.0",
75
- "@tanstack/react-query": "5.69.0",
74
+ "@tanstack/eslint-plugin-query": "5.74.7",
75
+ "@tanstack/react-query": "5.75.2",
76
76
  "@testing-library/dom": "10.4.0",
77
- "@testing-library/react": "16.2.0",
78
- "@types/node": "22.13.13",
77
+ "@testing-library/react": "16.3.0",
78
+ "@types/node": "22.15.3",
79
79
  "@types/react": "19.0.12",
80
80
  "@types/react-dom": "19.0.4",
81
- "eslint": "9.23.0",
81
+ "@vitest/eslint-plugin": "1.1.44",
82
+ "eslint": "9.26.0",
82
83
  "eslint-plugin-react-hooks": "5.2.0",
84
+ "eslint-plugin-testing-library": "7.1.1",
83
85
  "fastify": "4.29.0",
84
86
  "globals": "16.0.0",
85
87
  "husky": "9.1.7",
86
- "lint-staged": "15.5.0",
88
+ "lint-staged": "15.5.1",
87
89
  "npm-run-all2": "7.0.2",
88
90
  "prettier": "3.5.3",
89
91
  "random-access-memory": "6.2.1",
90
92
  "react": "19.0.0",
93
+ "react-dom": "19.0.0",
91
94
  "tsdoc-markdown": "1.2.0",
92
95
  "tshy": "3.0.2",
93
- "typescript": "5.8.2",
94
- "typescript-eslint": "8.27.0",
95
- "vitest": "3.0.9"
96
+ "typescript": "5.8.3",
97
+ "typescript-eslint": "8.31.1",
98
+ "vitest": "3.1.3"
96
99
  }
97
100
  }