From 07373e17d51dd48ac0d7178518c50116ad67d923 Mon Sep 17 00:00:00 2001 From: KoloMl Date: Wed, 19 Feb 2025 03:07:52 +0400 Subject: [PATCH] Updated exporters to use importable types for more type safety --- src/lib/extension/EntitiesTransporter.ts | 4 ++-- src/lib/extension/transporting/exporters.ts | 14 ++++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/lib/extension/EntitiesTransporter.ts b/src/lib/extension/EntitiesTransporter.ts index 8e258e2..ccbbd74 100644 --- a/src/lib/extension/EntitiesTransporter.ts +++ b/src/lib/extension/EntitiesTransporter.ts @@ -60,8 +60,8 @@ export default class EntitiesTransporter { } const exportableObject = exportEntityToObject( - entityObject, - this.#entityName + this.#entityName as keyof App.EntityNamesMap, + entityObject ); return JSON.stringify(exportableObject, null, 2); diff --git a/src/lib/extension/transporting/exporters.ts b/src/lib/extension/transporting/exporters.ts index c376c2a..21a78e8 100644 --- a/src/lib/extension/transporting/exporters.ts +++ b/src/lib/extension/transporting/exporters.ts @@ -1,8 +1,11 @@ import StorageEntity from "$lib/extension/base/StorageEntity"; +import type { ImportableObject } from "$lib/extension/transporting/importables"; + +type ExporterFunction = (entity: EntityType) => ImportableObject; type ExportersMap = { - [EntityName in keyof App.EntityNamesMap]: (entity: App.EntityNamesMap[EntityName]) => Record -}; + [EntityName in keyof App.EntityNamesMap]: ExporterFunction; +} const entitiesExporters: ExportersMap = { profiles: entity => { @@ -24,10 +27,13 @@ const entitiesExporters: ExportersMap = { } }; -export function exportEntityToObject(entityInstance: StorageEntity, entityName: string): Record { +export function exportEntityToObject( + entityName: EntityName, + entityInstance: App.EntityNamesMap[EntityName] +): ImportableObject { if (!(entityName in entitiesExporters) || !entitiesExporters.hasOwnProperty(entityName)) { throw new Error(`Missing exporter for entity: ${entityName}`); } - return entitiesExporters[entityName as keyof App.EntityNamesMap].call(null, entityInstance); + return entitiesExporters[entityName].call(null, entityInstance); }