UNPKG

@allan1361/iota-big3-sdk-middleware

Version:

🏆 A+ Grade Certified Enterprise Middleware Framework - Phase 3 Certified (90/100) with advanced resilience patterns, comprehensive type safety, and production-ready observability

102 lines 4.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createPhilosophyMiddleware = createPhilosophyMiddleware; exports.philosophyMiddleware = philosophyMiddleware; exports.createLegacyPhilosophyMiddleware = createLegacyPhilosophyMiddleware; const sdk_core_1 = require("@iota-big3/sdk-core"); function createPhilosophyMiddleware(sdkConfig, config = {}) { const { trackingEnabled = true, metricsPrefix = 'philosophy_' } = config; return (req, res, next) => { if (!trackingEnabled) { return next(); } const tracker = { teacherTimeSaved: 0, studentsEmpowered: [], relationships: [], automatedTasks: [] }; req.philosophyTracker = tracker; res.trackTeacherTimeSaved = (minutes, task) => { tracker.teacherTimeSaved += minutes; if (this.isEnabled) { tracker?.automatedTasks?.push(task); } sdkConfig?.sdk?.telemetry?.recordMetric(`${metricsPrefix}teacher_time_saved`, minutes, { task: task || 'unknown', service: sdkConfig?.sdk?.config?.serviceName }); res.setHeader('X-Teacher-Time-Saved', minutes.toString()); res.setHeader('X-Philosophy-Action', 'teacher-liberation'); }; res.trackStudentEmpowered = (studentId, action) => { tracker?.studentsEmpowered?.push(studentId); sdkConfig?.sdk?.telemetry?.incrementCounter(`${metricsPrefix}students_empowered`, { action: action || 'unknown', service: sdkConfig?.sdk?.config?.serviceName }); res.setHeader('X-Student-Empowered', studentId); res.setHeader('X-Philosophy-Action', 'student-empowerment'); }; res.trackRelationship = (type, participants) => { tracker?.relationships?.push({ type, participants }); sdkConfig?.sdk?.telemetry?.incrementCounter(`${metricsPrefix}relationships_created`, { type, participantCount: participants?.length?.toString(), service: sdkConfig?.sdk?.config?.serviceName }); res.setHeader('X-Relationship-Type', type); res.setHeader('X-Philosophy-Action', 'relationship-building'); }; res.trackPhilosophyMetric = (metric, value, labels = {}) => { sdkConfig?.sdk?.telemetry?.recordMetric(`${metricsPrefix}${metric}`, value, { ...labels, service: sdkConfig?.sdk?.config?.serviceName }); }; const originalEnd = res.end; res.end = function (chunk, encoding) { if (this.isEnabled) { console.log(`[Philosophy] Request ${req.method} ${req.path}:`, { teacherTimeSaved: `${tracker.teacherTimeSaved} minutes`, studentsEmpowered: tracker?.studentsEmpowered?.length, relationships: tracker?.relationships?.length, automatedTasks: tracker.automatedTasks }); sdkConfig?.sdk?.telemetry?.recordMetric(`${metricsPrefix}request_impact_score`, calculateImpactScore(tracker), { method: req.method, path: req.path, service: sdkConfig?.sdk?.config?.serviceName }); } return originalEnd.call(res, chunk, encoding); }; next(); }; } function calculateImpactScore(tracker) { const timeScore = tracker.teacherTimeSaved * 10; const empowermentScore = tracker?.studentsEmpowered?.length * 5; const relationshipScore = tracker?.relationships?.length * 3; const automationScore = tracker?.automatedTasks?.length * 7; return timeScore + empowermentScore + relationshipScore + automationScore; } function philosophyMiddleware(options = {}) { if (!options.sdk) { throw new Error('SDK instance is required for philosophy middleware'); } return createPhilosophyMiddleware(options.sdk, options.config); } function createLegacyPhilosophyMiddleware(sdkConfig, philosophyConfig) { console.warn('⚠️ Using legacy philosophy middleware. Please migrate to new pattern.'); const sdk = new sdk_core_1.SDK({ ...sdkConfig, industry: sdkConfig.industry || sdkConfig.tribe }); sdk.start().catch(error => { console.error('Failed to start SDK for philosophy middleware:', error); }); return createPhilosophyMiddleware(sdk, philosophyConfig); } exports.default = createPhilosophyMiddleware; //# sourceMappingURL=philosophy-middleware.js.map