{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import * as path from 'path'\nimport * as fs from 'fs'\n\nimport { wrapper, TypeOnEveryFile, TypeToolProp, TypeToolOptions } from '@asset-toolkit/core'\nconst parseLDtk = require('../parseLDtk')\n\nexport interface TypeProps extends TypeToolOptions {\n  worldCoordToEntities?: boolean\n  parser?: any\n}\n\n/**\n * A tool to generate json map from LDtk file\n * @param props - { pathIn, pathOut }\n * @param options - { }\n * @returns { Promise(returns) }\n */\nconst ldtk: (_props: TypeToolProp, options?: TypeProps) => Promise<unknown> = wrapper(\n  ({ pathIn, pathOut, options, file, next, log }: TypeOnEveryFile) => {\n    const opts = {\n      worldCoordToEntities: false,\n      ...options,\n    }\n\n    const fileData = fs.readFileSync(path.resolve(pathIn || pathOut, file), 'utf8')\n    const parser = opts.parser || parseLDtk\n\n    const LDtkFile = JSON.parse(fileData)\n\n    const { extractLevels, extractWorld } = parser(LDtkFile)\n    const worldName = file.replace('.ldtk', '')\n    const worldData = extractWorld()\n    const levels = extractLevels({\n      worldCoordToEntities: opts.worldCoordToEntities,\n    })\n\n    worldData.levels = []\n    levels.forEach((level: any) => {\n      worldData.levels.push({\n        name: level.name,\n        url: `${worldName}-${level.name}.json`,\n        data: level.fields.reduce((obj: any, item: any) => {\n          return { ...obj, [item['name']]: item['value'] }\n        }, {}),\n        tilesets: level.tilesetsIDs,\n      })\n      fs.writeFileSync(path.resolve(pathOut, `${worldName}-${level.name}.json`), JSON.stringify(level, null, ' '))\n      log(file)\n    })\n\n    fs.writeFileSync(path.resolve(pathOut, `${worldName}.json`), JSON.stringify(worldData, null, ' '))\n\n    next()\n  },\n  undefined,\n  { exts: ['ldtk'], name: 'LDtk to JSON' },\n)\n\nexport default ldtk\n"],"names":["parseLDtk","require","ldtk","wrapper","pathIn","pathOut","file","next","log","opts","worldCoordToEntities","options","fileData","fs","readFileSync","path","resolve","parser","JSON","parse","extractLevels","extractWorld","worldName","replace","worldData","levels","forEach","level","push","name","url","data","fields","reduce","obj","item","tilesets","tilesetsIDs","writeFileSync","stringify","undefined","exts"],"mappings":"0SAIA,IAAMA,EAAYC,QAAQ,gBAapBC,EAAwEC,EAC5E,gBAAGC,IAAAA,OAAQC,IAAAA,QAAkBC,IAAAA,KAAMC,IAAAA,KAAMC,IAAAA,IACjCC,KACJC,sBAAsB,KAFNC,SAMZC,EAAWC,EAAGC,aAAaC,EAAKC,QAAQZ,GAAUC,EAASC,GAAO,WACzDG,EAAKQ,QAAUjB,GAEbkB,KAAKC,MAAMP,IAEpBQ,IAAAA,cAAeC,IAAAA,aACjBC,EAAYhB,EAAKiB,QAAQ,QAAS,IAClCC,EAAYH,IACZI,EAASL,EAAc,CAC3BV,qBAAsBD,EAAKC,uBAG7Bc,EAAUC,OAAS,GACnBA,EAAOC,QAAQ,SAACC,GACdH,EAAUC,OAAOG,KAAK,CACpBC,KAAMF,EAAME,KACZC,IAAQR,MAAaK,EAAME,aAC3BE,KAAMJ,EAAMK,OAAOC,OAAO,SAACC,EAAUC,SACnC,YAAYD,UAAMC,EAAI,MAAWA,EAAI,WACpC,IACHC,SAAUT,EAAMU,cAElBxB,EAAGyB,cAAcvB,EAAKC,QAAQX,EAAYiB,MAAaK,EAAME,cAAcX,KAAKqB,UAAUZ,EAAO,KAAM,MACvGnB,EAAIF,KAGNO,EAAGyB,cAAcvB,EAAKC,QAAQX,EAAYiB,WAAmBJ,KAAKqB,UAAUf,EAAW,KAAM,MAE7FjB,UAEFiC,EACA,CAAEC,KAAM,CAAC,QAASZ,KAAM"}