@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
93 lines • 3.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isJsonValue = isJsonValue;
exports.isJsonObject = isJsonObject;
exports.isAuthUser = isAuthUser;
exports.isAuthResult = isAuthResult;
exports.isValidationResult = isValidationResult;
exports.isValidHeaderValue = isValidHeaderValue;
exports.isMiddlewareConfig = isMiddlewareConfig;
exports.extractHeaderString = extractHeaderString;
exports.extractQueryString = extractQueryString;
exports.validateJsonBody = validateJsonBody;
function isJsonValue(value) {
if (value === null || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
return true;
}
if (Array.isArray(value)) {
return value.every(isJsonValue);
}
if (typeof value === 'object' && value !== null) {
return Object.values(value).every(isJsonValue);
}
return false;
}
function isJsonObject(value) {
return typeof value === 'object' && value !== null && !Array.isArray(value) && isJsonValue(value);
}
function isAuthUser(value) {
if (!isJsonObject(value))
return false;
const obj = value;
return (typeof obj.id === 'string' &&
(obj.email === undefined || typeof obj.email === 'string') &&
(obj.name === undefined || typeof obj.name === 'string') &&
(obj.roles === undefined || (Array.isArray(obj.roles) && obj.roles.every(r => typeof r === 'string'))) &&
(obj.permissions === undefined || (Array.isArray(obj.permissions) && obj.permissions.every(p => typeof p === 'string'))) &&
(obj.organizationId === undefined || typeof obj.organizationId === 'string') &&
(obj.metadata === undefined || isJsonObject(obj.metadata)));
}
function isAuthResult(value) {
if (!isJsonObject(value))
return false;
const obj = value;
return (typeof obj.valid === 'boolean' &&
(obj.user === undefined || isAuthUser(obj.user)) &&
(obj.error === undefined || typeof obj.error === 'string'));
}
function isValidationResult(value) {
if (!isJsonObject(value))
return false;
const obj = value;
return (typeof obj.valid === 'boolean' &&
(obj.errors === undefined || (Array.isArray(obj.errors) &&
obj.errors.every(err => isJsonObject(err) &&
typeof err.field === 'string' &&
typeof err.message === 'string'))));
}
function isValidHeaderValue(value) {
return typeof value === 'string' || (Array.isArray(value) && value.every(v => typeof v === 'string'));
}
function isMiddlewareConfig(value) {
if (!isJsonObject(value))
return false;
const obj = value;
return (typeof obj.name === 'string' &&
(obj.enabled === undefined || typeof obj.enabled === 'boolean') &&
(obj.priority === undefined || typeof obj.priority === 'number') &&
(obj.options === undefined || isJsonObject(obj.options)) &&
(obj.metadata === undefined || isJsonObject(obj.metadata)));
}
function extractHeaderString(value) {
if (typeof value === 'string')
return value;
if (Array.isArray(value) && value.length > 0 && typeof value[0] === 'string') {
return value[0];
}
return undefined;
}
function extractQueryString(value) {
if (typeof value === 'string')
return value;
if (Array.isArray(value) && value.length > 0 && typeof value[0] === 'string') {
return value[0];
}
return undefined;
}
function validateJsonBody(body) {
if (!isJsonValue(body)) {
return { success: false, error: 'Invalid JSON body format' };
}
return { success: true, data: body };
}
//# sourceMappingURL=types.js.map