/** * Node (unified collection/entity) management service */ import { transceivePost } from './transceive' import type { ListFilter, ListSort, ListRange } from '../types/common' import type { CollectionInterface } from '../types/collection' import type { EntityInterface } from '../types/entity' export type NodeItem = CollectionInterface | EntityInterface export interface NodeListRequest { provider: string service: string | number location?: string | number | null recursive?: boolean filter?: ListFilter | null sort?: ListSort | null range?: ListRange | null } export type NodeListResponse = Record export interface NodeDeltaRequest { provider: string service: string | number location?: string | number | null signature: string recursive?: boolean detail?: 'ids' | 'full' } export interface NodeDeltaResult { added: Array modified: Array removed: Array signature: string } export const nodeService = { async list(request: NodeListRequest): Promise { const response = await transceivePost('node.list', { provider: request.provider, service: request.service, location: request.location ?? null, recursive: request.recursive ?? false, filter: request.filter ?? null, sort: request.sort ?? null, range: request.range ?? null, }) return Object.values(response) }, async delta(request: NodeDeltaRequest): Promise { return await transceivePost('node.delta', { provider: request.provider, service: request.service, location: request.location ?? null, signature: request.signature, recursive: request.recursive ?? false, detail: request.detail ?? 'ids', }) }, } export default nodeService