import JSZip from 'jszip'; import { stringify } from 'yaml'; import { mapJsonCategoryToYamlObject, mapJsonItemToYamlObject, mapJsonQuestToYamlObject, } from '~/lib/questsLoader'; //TODO include the main configuration export async function prepareZip( quests: EditorQuest[], categories: EditorCategory[], items: EditorItem[] ) { const transformedQuests = Object.fromEntries( quests.map((quest) => [quest.id, stringify(mapJsonQuestToYamlObject(quest))]) ); const transformedItems = Object.fromEntries( items.map((item) => [item.id, stringify(mapJsonItemToYamlObject(item))]) ); const transformedCategories = stringify( Object.fromEntries( categories.map((category) => [category.id, mapJsonCategoryToYamlObject(category)]) ) ); return { transformedQuests, transformedItems, transformedCategories, }; } export async function createZip( quests: { [key: string]: string }, categories: string, items: { [key: string]: string } ) { const zip = new JSZip(); zip.file('categories.yml', categories); const questsDirectory = zip.folder('quests'); Object.entries(quests).forEach(([key, value]) => { questsDirectory?.file(`${key}.yml`, value); }); const itemsDirectory = zip.folder('items'); Object.entries(items).forEach(([key, value]) => { itemsDirectory?.file(`${key}.yml`, value); }); return await zip.generateAsync({ type: 'blob' }); }