UNPKG

@ledgerhq/live-common

Version:
62 lines 2.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RecentAddressesArraySchema = exports.RecentAddressSchema = exports.CorruptedNestedAddressSchema = exports.CorrectAddressSchema = exports.LegacyStringAddressSchema = void 0; const zod_1 = require("zod"); /** * Zod schema for legacy string address format (backward compatibility) * Migrates old string-only addresses to the new format with metadata */ exports.LegacyStringAddressSchema = zod_1.z.string().transform((address) => ({ address, lastUsed: Date.now(), ensName: undefined, })); /** * Zod schema for correct recent address format */ exports.CorrectAddressSchema = zod_1.z.object({ address: zod_1.z.string(), lastUsed: zod_1.z.number(), ensName: zod_1.z.string().optional(), }); /** * Zod schema for corrupted nested address format * Handles data corruption from previous migration issues * Expected corrupted format: { address: { address: string, lastUsed?: number, ensName?: string }, index?: number } */ exports.CorruptedNestedAddressSchema = zod_1.z .object({ address: zod_1.z.object({ address: zod_1.z.string(), lastUsed: zod_1.z.number().optional(), ensName: zod_1.z.string().optional(), }), index: zod_1.z.number().optional(), }) .transform((entry) => ({ address: entry.address.address, lastUsed: entry.address.lastUsed ?? Date.now(), ensName: entry.address.ensName, })); /** * Union schema for all recent address formats * Supports: legacy strings, correct format, and corrupted nested format */ exports.RecentAddressSchema = zod_1.z.union([ exports.LegacyStringAddressSchema, exports.CorrectAddressSchema, exports.CorruptedNestedAddressSchema, ]); /** * Schema for array of recent addresses with sanitization * Filters out invalid entries while preserving valid addresses */ exports.RecentAddressesArraySchema = zod_1.z.array(zod_1.z.unknown()).transform(entries => { return entries .map(entry => { const result = exports.RecentAddressSchema.safeParse(entry); return result.success ? result.data : null; }) .filter((entry) => entry !== null && entry.address.length > 0); }); //# sourceMappingURL=recentAddresses.js.map