UNPKG

tg-bot-builder

Version:

Modular NestJS builder for multi-step Telegram bots with Prisma persistence and pluggable session storage.

67 lines 2.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.normalizeHistory = exports.normalizeAnswers = exports.serializeValue = void 0; const serializeValue = (value, nullValue) => { if (value === undefined || value === null) { return nullValue; } if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') { return value; } if (typeof value === 'bigint') { return value.toString(); } if (Array.isArray(value)) { return value.map((item) => (0, exports.serializeValue)(item, nullValue)); } if (typeof value === 'object') { const entries = Object.entries(value); const normalized = {}; for (const [key, item] of entries) { normalized[key] = (0, exports.serializeValue)(item, nullValue); } return normalized; } return nullValue; }; exports.serializeValue = serializeValue; const normalizeAnswers = (answers, nullValue) => { if (!answers || typeof answers !== 'object' || Array.isArray(answers)) { return {}; } const result = {}; for (const [key, value] of Object.entries(answers)) { result[key] = value ?? nullValue; } return result; }; exports.normalizeAnswers = normalizeAnswers; const normalizeHistory = (history, nullValue) => { if (!Array.isArray(history)) { return []; } return history .map((entry) => typeof entry === 'object' && entry !== null ? entry : undefined) .filter((entry) => Boolean(entry)) .map((entry) => { const pageIdValue = entry.pageId; const timestampValue = entry.timestamp; const pageId = typeof pageIdValue === 'string' ? pageIdValue : String(pageIdValue ?? ''); const timestamp = typeof timestampValue === 'string' ? timestampValue : new Date().toISOString(); return { pageId, timestamp, value: (0, exports.serializeValue)(entry.value, nullValue), }; }); }; exports.normalizeHistory = normalizeHistory; //# sourceMappingURL=serialization.js.map