@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
JavaScript
;
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