The old code had a bug that highlighted a socket from a node to which a edge already exists which could not be connected to
87 lines
2.3 KiB
TypeScript
87 lines
2.3 KiB
TypeScript
import type { NodeDefinition, NodeId, NodeRegistry } from '@nodarium/types';
|
|
|
|
export function createMockNodeRegistry(nodes: NodeDefinition[]): NodeRegistry {
|
|
const nodesMap = new Map(nodes.map(n => [n.id, n]));
|
|
return {
|
|
status: 'ready' as const,
|
|
load: async (nodeIds: NodeId[]) => {
|
|
const loaded: NodeDefinition[] = [];
|
|
for (const id of nodeIds) {
|
|
if (nodesMap.has(id)) {
|
|
loaded.push(nodesMap.get(id)!);
|
|
}
|
|
}
|
|
return loaded;
|
|
},
|
|
getNode: (id: string) => nodesMap.get(id as NodeId),
|
|
getAllNodes: () => Array.from(nodesMap.values()),
|
|
register: async () => {
|
|
throw new Error('Not implemented in mock');
|
|
}
|
|
};
|
|
}
|
|
|
|
export const mockFloatOutputNode: NodeDefinition = {
|
|
id: 'test/node/output',
|
|
inputs: {},
|
|
outputs: ['float'],
|
|
meta: { title: 'Float Output' },
|
|
execute: () => new Int32Array()
|
|
};
|
|
|
|
export const mockFloatInputNode: NodeDefinition = {
|
|
id: 'test/node/input',
|
|
inputs: { value: { type: 'float' } },
|
|
outputs: [],
|
|
meta: { title: 'Float Input' },
|
|
execute: () => new Int32Array()
|
|
};
|
|
|
|
export const mockGeometryOutputNode: NodeDefinition = {
|
|
id: 'test/node/geometry',
|
|
inputs: {},
|
|
outputs: ['geometry'],
|
|
meta: { title: 'Geometry Output' },
|
|
execute: () => new Int32Array()
|
|
};
|
|
|
|
export const mockPathInputNode: NodeDefinition = {
|
|
id: 'test/node/path',
|
|
inputs: { input: { type: 'path', accepts: ['geometry'] } },
|
|
outputs: [],
|
|
meta: { title: 'Path Input' },
|
|
execute: () => new Int32Array()
|
|
};
|
|
|
|
export const mockVec3OutputNode: NodeDefinition = {
|
|
id: 'test/node/vec3',
|
|
inputs: {},
|
|
outputs: ['vec3'],
|
|
meta: { title: 'Vec3 Output' },
|
|
execute: () => new Int32Array()
|
|
};
|
|
|
|
export const mockIntegerInputNode: NodeDefinition = {
|
|
id: 'test/node/integer',
|
|
inputs: { value: { type: 'integer' } },
|
|
outputs: [],
|
|
meta: { title: 'Integer Input' },
|
|
execute: () => new Int32Array()
|
|
};
|
|
|
|
export const mockBooleanOutputNode: NodeDefinition = {
|
|
id: 'test/node/boolean',
|
|
inputs: {},
|
|
outputs: ['boolean'],
|
|
meta: { title: 'Boolean Output' },
|
|
execute: () => new Int32Array()
|
|
};
|
|
|
|
export const mockBooleanInputNode: NodeDefinition = {
|
|
id: 'test/node/boolean-input',
|
|
inputs: { value: { type: 'boolean' } },
|
|
outputs: [],
|
|
meta: { title: 'Boolean Input' },
|
|
execute: () => new Int32Array()
|
|
};
|