UNPKG

solidworks-mcp-server

Version:

Clean Architecture SolidWorks MCP Server - Production-ready with SOLID principles

161 lines 4.39 kB
/** * Base Resource Class for SolidWorks MCP Implementation * Provides foundation for all SolidWorks resources with state management */ import { z } from 'zod'; export var ResourceStatus; (function (ResourceStatus) { ResourceStatus["PENDING"] = "pending"; ResourceStatus["CREATING"] = "creating"; ResourceStatus["CREATED"] = "created"; ResourceStatus["UPDATING"] = "updating"; ResourceStatus["DELETING"] = "deleting"; ResourceStatus["DELETED"] = "deleted"; ResourceStatus["FAILED"] = "failed"; ResourceStatus["EXECUTING"] = "executing"; ResourceStatus["COMPLETED"] = "completed"; ResourceStatus["UNKNOWN"] = "unknown"; })(ResourceStatus || (ResourceStatus = {})); export class SolidWorksResource { id; name; _properties; _outputs = {}; _dependencies = []; _status = ResourceStatus.PENDING; _metadata; constructor(id, name, properties) { this.id = id; this.name = name; this._properties = properties; this._metadata = { createdAt: new Date().toISOString(), updatedAt: new Date().toISOString(), createdBy: 'solidworks-mcp', version: 1, tags: {}, annotations: {} }; } /** * Validate the resource properties against schema */ validate() { try { this.schema.parse(this._properties); return { valid: true }; } catch (error) { if (error instanceof z.ZodError) { return { valid: false, errors: error.errors.map(e => ({ path: e.path.join('.'), message: e.message })) }; } return { valid: false, errors: [{ path: '', message: 'Unknown validation error' }] }; } } /** * Convert resource to state representation */ toState() { return { id: this.id, type: this.type, name: this.name, properties: this._properties, outputs: this._outputs, metadata: this._metadata, status: this._status }; } /** * Restore resource from state */ fromState(state) { this._properties = state.properties; this._outputs = state.outputs; this._metadata = state.metadata; this._status = state.status; } /** * Get resource dependencies */ getDependencies() { return this._dependencies; } /** * Add a dependency to this resource */ addDependency(dependency) { this._dependencies.push(dependency); } /** * Get resource outputs */ getOutputs() { return this._outputs; } /** * Set resource outputs */ setOutputs(outputs) { this._outputs = outputs; this._metadata.updatedAt = new Date().toISOString(); } /** * Get resource status */ getStatus() { return this._status; } /** * Update resource status */ setStatus(status) { this._status = status; this._metadata.updatedAt = new Date().toISOString(); } /** * Get resource properties */ getProperties() { return this._properties; } /** * Update resource properties */ updateProperties(properties) { const newProperties = { ...this._properties, ...properties }; // Validate before updating try { this.schema.parse(newProperties); this._properties = newProperties; this._metadata.updatedAt = new Date().toISOString(); this._metadata.version++; return { valid: true }; } catch (error) { if (error instanceof z.ZodError) { return { valid: false, errors: error.errors.map(e => ({ path: e.path.join('.'), message: e.message })) }; } return { valid: false, errors: [{ path: '', message: 'Unknown validation error' }] }; } } } //# sourceMappingURL=base.js.map